您正在寻找叫做Coroutines的东西。
Update()
被称为每秒60次。由于Update()
方法中有ChangeColor()
,所以无论ChangeColor()
方法中的yield语句如何,它都会被调用,因为yield只能在协同程序中使用。
您需要调用这样的方法:
StartCoroutine(ChangeColor());
或
StartCoroutine("ChangeColor");
请注意,如果你把该行的Update()
方法里面,你会开始一个新的协程60倍一秒。如果你想让ChangeColor()
在启动后继续运行,你需要稍微改变它的逻辑,并将它放在你的Start()
方法中,或者放在它被调用一次的地方。
function ChangeColor() {
while(true){
this.camera.backgroundColor = Color32(Random.Range(0, 255), Random.Range(0, 255), Random.Range(0, 255), 1);
yield WaitForSeconds(5);
}
}
你会注意到我添加了一个while循环是一个无限循环,和里面的while循环,我把yield语句。这将适当地产生5秒的方法,然后再次循环并永久生效。
一些其他注意事项:
指向其他协程方法的链接。
StartCoroutine
也是一个警告的话。不要将协程与多线程混淆。协程将在Unity主循环期间运行.http://docs.unity3d.com/Manual/ExecutionOrder.html – TimeEchoes 2014-11-02 04:42:15
WORKs!谢谢 – Bryce 2014-11-02 04:45:23