我对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()函数中的函数;
提前致谢!
答案 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;
}
}
}