什麼是協程?
1、協程是乙個分部執行,遇到條件(yield return 語句)會掛起,直到條件滿足才會被喚醒繼續執行後面的**。
2、unity在每一幀(frame)都會去處理物件上的協程。unity主要是在update後去處理協程(檢查協程的條件是否滿足),但也有寫特例。
什麼情況是條件滿足?
在協程方法中使用 yield return 其實就是為了返回 ienumerator物件,只有當這個物件的 movenext() 返回 false 時,即該 ienumertator 的 current 已經迭代到最後乙個元素了,才會執行 yield return 後面的語句。也就是說, yield return 被會「翻譯」為乙個 ienmerator 物件。
以var request = new www();
yield return request;
為例應該有以下內容才對:
int state;
bool movenext()
if(state == 0)
var request = new www();
state = 1;
return request.isdone ? false : true;
當請求完成後,movenext返回false,認為ienumerator已經迭代完成,此時開始執行後續**。
感謝這樣的好文章:
協程是什麼
以下是我自己的理解 一般的執行緒切換是由作業系統來執行的,而協程則是一種特殊的執行緒,這種執行緒的切換是由使用者自己來決定的,並且切換需要做的額外工作如 執行狀態和執行位置的儲存,也是由使用者自己來做的。以下是乙個解釋的比較清楚的內容 筆者最美好的記憶來自於早年在6502 cpu的cc800上寫彙編...
Unity中的協程
1.建立協程 迭代器 ienumerator private ienumerator test 裡面可以使用 yield return new waitforsecond 1 等待1s後執行後面的 yield return new waitforseconds 0.3f 等待0.3秒,一段指定的時間...
Unity中協程方法使用
開啟協程 void start 返回值是ienumerator 返回引數時使用 yield return null 協程方法的呼叫是startcoroutine changecolor ienumerator changecolor 關閉協程 關閉協程的方法需要和開啟協程的方法對應 不能使用star...