我目前正在嘗試理解IEnumerator & Unity內部的協同程序,對「yield return null」執行的內容不太置信。目前我相信它基本上會暫停並等待下一幀,並在下一幀中再次執行while語句。Unity - IEnumerator的yield返回null
如果我省略「yield return null」,看起來對象會立即移動到其目的地或可能「跳過很多幀」。所以我想我的問題是這個「yield return null」函數在這個while循環中是如何的,爲什麼它有必要擁有它。
void Start() {
StartCoroutine(Move());
}
IEnumerator Move(){
while (a > 0.5f){
... (moves object up/down)
yield return null; // <---------
}
yield return new WaitForSeconds(0.5f);
.... (moves object up/down)
StartCoroutine(Move());
}
我對Coroutines本人並不熟悉,但我的猜測是他們會每幀運行一次(或者什麼東西),'yield return'基本上是說「等到下一次更新繼續」的快捷方式。如果你沒有它,while循環將一直運行到完成一次更新,這就是爲什麼沒有它的對象立即移動。 – Abion47