【问题标题】:No effects with WaitForSecondsWaitForSeconds 没有影响
【发布时间】:2014-01-18 20:25:18
【问题描述】:

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

public IEnumerator Wait()
{
    yield return new WaitForSeconds (6);
}

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

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

但这不起作用! check1 和 check2 同时打印。我错过了一些东西。这在FixedUpdate() 中运行。

【问题讨论】:

标签: c# unity3d


【解决方案1】:

协程不是这样工作的。它开始一个新的(并行)执行。 为了实现等待,您必须在 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 秒。

【讨论】:

  • 感谢您的回答。现在,如果我想停止的不是并行执行,而是我启动 WaitForSeconds 的线程,我该怎么做?
猜你喜欢
  • 2016-07-06
  • 2020-09-06
  • 1970-01-01
  • 2019-03-18
  • 2020-11-10
  • 2015-11-04
  • 2010-12-01
  • 2020-07-09
  • 2013-10-07
相关资源
最近更新 更多