1、协程并不是多线程,本质上是一个迭代器,但是起到一个多线程的作用。
2、协程以yield为返回标志,表示yield后面的内容会在下一帧继续执行。
3、协程依赖于monobehaviour 。后续我们要做一个不依赖于monobehaviour 的协程管理器和一个定时回调服务器。
使用方式:
- yield return 0;//程序在下一帧中从当前位置继续执行
- yield return null;//程序在下一帧中从当前位置继续执行
- yield return new WaitForSeconds(N);//程序等待N秒后从当前位置继续执行
- yield new WaitForEndOfFrame();//在所有的渲染以及GUI程序执行完成后从当前位置继续执行
- yield new WaitForFixedUpdate();//所有脚本中的FixedUpdate()函数都被执行后从当前位置继续执行
- yield return WWW;//等待一个网络请求完成后从当前位置继续执行
- yield return StartCoroutine(xxx);//等待一个xxx的协程执行完成后从当前位置继续执行
- //如果使用yield break语句,将会导致协程的执行条件不被满足,不会从当前的位置继续执行程序,而是直接从当前位置跳出函数体,回到函数的根部
yield break;
使用场景:
- 1、延时。
- 2、在某处等待直到某个条件满足继续执行。
do
{
if(condition == true)
{
break;
}
yield return null;
}while(1)
- 3、等待网络请求完成
- 4、等待IO读取完成,比如配置文件。
- 5、等待某项计算完成,比如大量的战斗信息的计算。
网友评论