WaitForSeconds没有效果

时间:2014-01-18 20:25:18

标签: c# unity3d

当我按下游戏手柄或键盘上的按钮时,我希望我的角色停止。当我按下按钮时,角色必须做一个特定的动画,所以没有任何动作,只有动画。 我试图弄清楚WaitForSeconds如何工作,但是当我尝试使用它时,它不起作用。这里是调用WaitForSeconds

的函数的代码
public IEnumerator Wait()
{
    yield return new WaitForSeconds (6);
}

当bool变量animationTest为true时,我希望程序等待6秒

if (animationTest) 
{
    UnityEngine.Debug.Log ("check1");
    StartCoroutine (Wait ());
    UnityEngine.Debug.Log ("check2");
    animationTest = false;
}

但这不起作用! check1和check2同时打印。我错过了什么。这在FixedUpdate()

中运行

1 个答案:

答案 0 :(得分:2)

Coroutine不能像这样工作。它启动一个新的(并行)执行。 为了实现等待,您必须在IEnumerator

中执行此操作
public IEnumerator SomethingElse() {
  animationTest = false;
  Debug.Log("check1");
  yield return new WaidForSeconds(6f);
  Debug.Log("check2");
  yield return true;
}

void FixedUpdate() {
  if (animationTest) {
    StartCoroutine(SomethingElse());
  }
}

现在,当您在某个时间点设置animationTest时,您应该看到两个日志之间的时间间隔为6秒。