Unity中的協程是什么?


什么是協程?

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已經迭代完成,此時開始執行后續代碼。

 

感謝這樣的好文章:http://dsqiu.iteye.com/blog/2029701

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM