StartCoroutine在unity3d的幫助中叫作協程,意思就是啓動一個輔助的線程。
javascript
在C#中直接有Thread這個線程,可是在unity中有些元素是不能操做的。這個時候能夠使用協程來完成。java
使用線程的好處就是不會出現界面卡死的狀況,若是有一次很是大量的運算,沒用線程就會出現假死的狀況。post
下面經過一個簡單的例子來講明使用協程的好處:測試
上面的代碼表示在GUI中定義2個label和按鈕,一個按鈕啓動協程計算,另外一個直接計算結果。因爲2個方法都是計算一樣的結果,計算量比較大,因此直接計算出現了暫時的卡死狀況。spa
這個方法是協程的寫法,在C#中協程要定義爲IEnumerator 這個類型,javascript中不須要。
.net
yield return 1;這句話表示返回1幀的結果。在i爲100的整數時,就返回一次結果,這樣能夠避免大量的計算卡死。線程
這個方法就是直接計算結果,因爲運算量比較大,因此界面會卡死,這樣就能夠體現出用協程的好處了。
使用IEnumerator 這個類型時,必須用yield return來返回結果,參數爲數字時表示爲幀數。
如yield return 1 表示每一幀返回一次結果。3d