Unity Engine WaitForSeconds如何工作?

时间:2015-05-25 22:31:17

标签: c# unity3d

我对Unity引擎很新,我正在尝试使用waitforseconds函数,它似乎并没有起作用。非常感谢任何帮助。

代码:

IEnumerator SetCountText(){
        countText.text = "Count: " + count.ToString();
        if (count >= 12) {
            winText.text = "You win!";
            yield return new WaitForSeconds (4);
            NextLevel ();
        }
    }

我使用startcoroutine(setcounttext())调用start()函数中的函数;

提前致谢!

2 个答案:

答案 0 :(得分:0)

你提到你在统一脚本的Start()函数中开始你的couroutine。当脚本首次初始化时,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变量是&gt; = 12然后4秒后,等级会发生变化。不确定这是否是你想要达到的效果。

答案 1 :(得分:0)

我发现这个函数并不是一直都很好用,所以我编写了自己的简单类来排序问题。我用这个来计算秒数没有任何问题。

public class MyCouroutine
{
    public static IEnumerator WaitForRealSeconds(float duration)
    {
        float start = Time.realtimeSinceStartup;
        while (Time.realtimeSinceStartup < start + duration)
        {
            yield return null;
        }
    }
}