Unity引擎WaitForSeconds是如何工作的?
本文关键字:工作 何工作 引擎 WaitForSeconds Unity | 更新日期: 2023-09-27 17:50:49
我是unity引擎的新手,我正在尝试使用waitforseconds功能,它似乎不起作用。如有任何帮助,不胜感激。
代码:IEnumerator SetCountText(){
countText.text = "Count: " + count.ToString();
if (count >= 12) {
winText.text = "You win!";
yield return new WaitForSeconds (4);
NextLevel ();
}
}
我在start()函数中使用startcoroutine(setcounttext());
提前感谢!
您提到您在unity脚本的Start()
函数中启动您的例程。Start()只在脚本初始化时调用一次。
考虑到协程的逻辑,它只开始一次,然后立即结束。
如果需要常量检查,则需要将所有内容包含在while循环中:
IEnumerator SetCountText(){
while (count < 12) {
countText.text = "Count: " + count.ToString();
yield return new WaitForSeconds(1);
}
winText.text = "You win!";
yield return new WaitForSeconds (4);
NextLevel ();
}
现在发生的是,如果count
变量>= 12,那么在4秒后,级别发生变化。不确定这是不是你想要达到的效果
我发现这个函数在任何时候都不能很好地工作,所以我自己编写了一个简单的类来对这个问题进行排序。我从来没有遇到过用这个数秒的问题。
public class MyCouroutine
{
public static IEnumerator WaitForRealSeconds(float duration)
{
float start = Time.realtimeSinceStartup;
while (Time.realtimeSinceStartup < start + duration)
{
yield return null;
}
}
}