美文网首页
Coroutine 深入理解

Coroutine 深入理解

作者: 东丶野 | 来源:发表于2017-05-09 10:04 被阅读0次

coroutine这个功能是unity非常好用的功能,能解决类似线程的一些问题,而且不用考虑lock 和 同步的问题,所以必须深入掌握coroutine的功能。

coroutine的使用场景
等待多久做某件事
等待某件事结束再做后续的事  tips:使用while(条件巧妙的做到)
coroutine不是线程,不会在unity中并行处理
这点必须了解清楚,很多同学会在这里迷糊,其实这个功能只是c#
的yield的功劳。coroutine的调用仍然会在unity 主线程中调用。
简单写个测试用例就知道了。

public class NewBehaviourScript : MonoBehaviour {
void Start () {
    StartCoroutine(Test());
    Debug.Log("after coroutine");
}
IEnumerator Test(){
    for(int i=0; i<1000; i++){
        Debug.Log(i);
    }
    yield return null;
    Debug.Log("end test");
}
}
打印结果顺序:#)打印1000次i的信息 --> after coroutine -->end test
从结果我们可以看到: courtine的却是一个单线程的,不然的话after coroutine的打印
是不会等到程序遇到yield关键字暂停后继续进行的。所以之前的unity并行处理的理解
是错误的,或者给你造成了假象。
coroutine的调用时机
5555.png
看下unity的官方的coroutine的流程图就可以明白了。croutine一般情况是在
update 后执行的。当然unity 也提供了WaitForEndOfFrame 这种的功能。

相关文章

网友评论

      本文标题:Coroutine 深入理解

      本文链接:https://www.haomeiwen.com/subject/gqdbtxtx.html