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引擎WaitForSeconds是如何工作的?

您提到您在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;
        }
    }
}