unity异步加载 协程
协程:请求网络时间,AI,延时操作
协程不是线程,它是在主线程中同步执行一个方法
//协程方法:返回值必须是IEnumerator;
//yield:挂起(当程序运行到yield处会被挂起(暂停))
//yield return 执行方法(等待return后的代码执行完毕,然后再恢复程序运行)
协程的注意事项:
1 在程序中调用StopCoroutine()方法只能终止以字符串形式启动(开始)的协程;
2 多个协程可以同时运行,它们会根据各自的启动顺序来更新;
3 协程可以嵌套任意多层;
4 如果你想让多个脚本访问一个协程,那么你可以定义静态的协程;
5 协程不是多线程(尽管它们看上去是这样的),它们运行在同一线程中,跟普通的脚本一样;
6 如果你的程序需要进行大量的计算,那么可以考虑在一个随时间进行的协程中处理它们;
7 IEnumerator类型的方法不能带ref或者out型的参数,但可以带被传递的引用;
8 目前在Unity中没有简便的方法来检测作用于对象的协程数量以及具体是哪些协程作用在对象上。
9 unity崩溃:主线程中出现死循环
10 死循环写在协程中不会影响到主线程
挂起一秒的时间 yield return new WaitForSeconds(1);
挂起一帧的时间 yield return null 或 0 ;
场景的真加载个人理解(利用协程加载下个场景的数据)
Start,Update,协程函数在第一次加载时是同步进行的,
所以前面90%是在同步加载下一个场景的信息,当到了
0.89时同步的协程已经把下个场景数据加载完成时,
场景对象的Progress为0.9,此时要手
动把第一个ProgressBar的value值设置到1。此时再同意跳转场景
具体实例:
http://blog.csdn.net/huang9012/article/details/38492937

浙公网安备 33010602011771号