最近,需要需要用unity 3d做點東西,但是了碰到了延遲加載問題,我總結餘下:
Coroutines &
Yield是unity3d程式設計中重要的概念,它可以實作将一段程式延遲執行或者将其各個部分分布在一個時間段内連續執行,但是在Javascript與C#中實作Coroutines
& Yield,在文法上卻有一些差別:
javascript中yield用法很簡單,直接yield就行了,或者yield
WaitForSeconds (2);
c#中的用法如下:
yield不可單獨使用
需要與return配合使用,例如:
1 yield return 0; //等0幀
2 yield return 1;
//等1幀
3 yield return WaitForSeconds(3.0); //等待3秒
所有使用yield的函數必須将傳回值類型設定為IEnumerator類型,例如:
最後,也是在”Using
C#”這個章節中沒有講到的關鍵一點是,所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用,例如:
這就是yield的用法。
1
<code>1</code>
<code>StartCoroutine</code><code>(</code><code>DoSomeThingInDelay</code><code>(</code><code>)</code><code>)</code><code>;</code>