【发布时间】:2019-06-17 17:21:00
【问题描述】:
我有一个项目,通过蓝牙从 Arduino 控制器读取输入,并根据它读取的输入播放特定动画,输入可以是 1 或 2 或 3 或其中 2 或 3 的混合,总共 7输入。
每个读数都在一个“if”语句中,然后是一个“else if”语句,用于检查下一个组合,我正在读取一个播放动画的协程,这里的问题是它只播放了 0.1 秒然后被剪切。
我尝试添加一个条件以等到动画结束然后再次阅读,但这确实有效,我将添加一个小示例
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 秒。
谢谢。
【问题讨论】: