我对统一引擎非常陌生,我正在尝试使用waitforseconds函数,但似乎无法正常工作。任何帮助深表感谢。

码:

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


我通过使用startcoroutine(setcounttext())在start()函数中调用该函数;

提前致谢!

最佳答案

您提到您是在unity脚本的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变量> = 12,然后在4秒钟后级别发生变化。不知道这是否是您要达到的效果。

关于c# - Unity Engine WaitForSeconds如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30446845/

10-15 00:48