Unity 之 協程 初級

2021-08-28 14:03:53 字數 896 閱讀 8890

協程可以通過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秒,一段指定的時間...