協程可以通過startcoroutine()來呼叫
只需要在裡面穿進去乙個ienumerator型別的方法 就可以了。這個方法是可以帶有引數的哦。
舉個例子
ienumerator test2()
void start ()
這樣就在一開始呼叫這個test2的方法了
現在我來著重講講最讓人煩心的yield return這個東西
yield return 這裡我是返回的null,這個代表這個協程在這裡跳出,在下一幀的時候再次從這裡開始執行**,也就是後面的空語句。
test2()這個方法體中的所有程式語句全部按順序執行完畢後,這個協程就做完了。
但是這個方法是可以通過迴圈語句重複呼叫,使協程永遠不會結束。
ienumerator test()
}
回到yield return上來
yield return null:
yield return new waitforseconds(): 呼叫unity自帶的方法,等待多少秒後繼續執行後面**
yield return test(): 呼叫自己的協程方法
yield return 0:同null
yield return 1:同null
yield return 100:也同null , 也就是說 後面的數字不管多少,都是同null
yield break:協程直接從此處終止
return null:別用會報空指標。
剛才講了ienumerator 自製函式,並且這個自製函式是可以傳入引數的,我們就在想,可不可以傳入乙個ienumerator的引數來在這個自製函式裡執行另乙個函式,結果是不行。
更多詳細的知識請參考:
Unity 協程詳解
class myiter ienumerable myiter iter newmyiter foreach int num in iter 我們需要讓資料結構支援foreach遍歷,所以要繼承ienumerable介面,實現getenumerator方法返回乙個迭代器,那麼這裡就很奇怪,返回值明明...
Unity學習疑問記錄之協程
總結 1.協程相當於多執行緒但不是,儘管它們看上去是這樣的 它們執行在同一執行緒中,跟普通的指令碼一樣 2.協程的方法必須返回值是ienumerator 4.協程方法的呼叫 1 startcoroutine 方法名 這種沒法單個終止 2 startcoroutine 方法名 5.協程的終止 stop...
Unity中的協程
1.建立協程 迭代器 ienumerator private ienumerator test 裡面可以使用 yield return new waitforsecond 1 等待1s後執行後面的 yield return new waitforseconds 0.3f 等待0.3秒,一段指定的時間...