最近,需要需要用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類型,例如:
IEnumerator DoSomeThingInDelay() {...}
最后,也是在”Using C#”這個章節中沒有講到的關鍵一點是,所有IEnumerator類型函數必須使用”StartCoroutine”這個函數觸發,不能單獨使用,例如:
StartCoroutine(DoSomeThingInDelay());
這就是yield的用法。
1
|
1
StartCoroutine
(
DoSomeThingInDelay
(
)
)
;
|