Unity中的協程是什麼?

2022-01-29 02:05:47 字數 686 閱讀 6992

什麼是協程?

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...