C# 在unity中,调用包含在另一个协同程序中播放动画的协同程序使动画仅播放0.1秒
我有一个项目,通过蓝牙读取Arduino控制器的输入,并根据它读取的输入播放特定动画,输入可以是1或2或3,也可以是其中2或3个的混合,总共7个输入 每次读取都在一个“if”语句中,然后是“else if”语句,用于检查下一个组合,我正在读取一个播放动画的协同程序,这里的问题是它只播放0.1秒,然后被剪切 我试图添加一个条件,等待动画结束,然后再次阅读,但这不起作用,我将添加一个小的exmapleC# 在unity中,调用包含在另一个协同程序中播放动画的协同程序使动画仅播放0.1秒,c#,unity3d,C#,Unity3d,我有一个项目,通过蓝牙读取Arduino控制器的输入,并根据它读取的输入播放特定动画,输入可以是1或2或3,也可以是其中2或3个的混合,总共7个输入 每次读取都在一个“if”语句中,然后是“else if”语句,用于检查下一个组合,我正在读取一个播放动画的协同程序,这里的问题是它只播放0.1秒,然后被剪切 我试图添加一个条件,等待动画结束,然后再次阅读,但这不起作用,我将添加一个小的exmaple IEnumerator ManageConnection (BluetoothDevice de
IEnumerator ManageConnection (BluetoothDevice device)
{
while (device.IsReading)
{
byte [] msg = device.read ();
if (msg != null)
{
string content = System.Text.ASCIIEncoding.ASCII.GetString (msg);
string [] lines = content.Split(new char[]{'\n','\r'});
//Add those lines to the scrollText
if (!animationPlaying)
{
if (lines.Contains("123"))
{
StartCoroutine(Animating(0));
audsrc.PlayOneShot(audioList[5]);
StartCoroutine(SlowDown(0.1f));
//StartCoroutine(ActiveEffect(5));
coinsCount += 1;
}
else if (lines.Contains("12"))
{
yeahCount += 1;
StartCoroutine(Animating(5));
audsrc.PlayOneShot(audioList[4]);
StartCoroutine(SlowDown(0.1f));
}
}
}
这是一个用于制作动画的协同程序:
public IEnumerator Animating(int i)
{
animationPlaying = true;
animator.Play(animationNames[i]);
yield return new WaitForSeconds(1);
animationPlaying = false;
}
我只想让动画播放到结束,而不是仅仅0.1秒
谢谢。您可以让动画在Animator组件上播放到最后,而不是使用协同程序进行硬编码
您可以让动画在Animator组件上一直播放到结束,而不是使用协同程序进行硬编码
问题是,因为这将被称为每一帧,如果我这样做,没有等待时间,下一个被称为动画的动画将剪切上一个,想象一下,你用一个按钮,按下它很多次,使用协同程序,等待1秒钟,无论你点击按钮的速度有多快,它只会在1秒后读取下一个。因为这将被称为每一帧,如果我这样做,没有等待时间,下一个被称为动画将剪切上一个,想象你用一个按钮这样做,然后你按下它很多次,用协程并等待1秒,不管你点击按钮的速度有多快,它将仅在1秒后读取下一个。