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