1.1,创建一个协程方法执行死循环操作不断向控制台打印hello:如图
1.2,协程的yield return 和yield break
yield return null; // 下一帧再执行后续代码
yield return 0; //下一帧再执行后续代码
yield return 6;//(任意数字) 下一帧再执行后续代码
yield break; //直接结束该协程的后续操作
yield return asyncOperation;//等异步操作结束后再执行后续代码
yield return StartCoroution(/*某个协程*/);//等待某个协程执行完毕后再执行后续代码
yield return WWW();//等待WWW操作完成后再执行后续代码
yield return new WaitForEndOfFrame();//等待帧结束,等待直到所有的摄像机和GUI被渲染完成后,在该帧显示在屏幕之前执行
yield return new WaitForSeconds(0.3f);//等待0.3秒,一段指定的时间延迟之后继续执行,在所有的Update函数完成调用的那一帧之后(这里的时间会受到Time.timeScale的影响);
yield return new WaitForSecondsRealtime(0.3f);//等待0.3秒,一段指定的时间延迟之后继续执行,在所有的Update函数完成调用的那一帧之后(这里的时间不受到Time.timeScale的影响);
yield return WaitForFixedUpdate();//等待下一次FixedUpdate开始时再执行后续代码
yield return new WaitUntil()//将协同执行直到 当输入的参数(或者委托)为true的时候....如:yield return new WaitUntil(() => frame >= 10);
yield return new WaitWhile()//将协同执行直到 当输入的参数(或者委托)为false的时候.... 如:yield return new WaitWhile(() => frame < 10);
2.执行协程方法,StartCoroutine()启动协程方法如图。
3,关闭协程
3.1关闭某个协程,先用StopCoroutine()启动协程,要执行的协程以协程名字串形式“Save”执行,不然无法关闭协程如图启动协程的例子。
协程中调用StopCoroutine("Save")执行11次即(0-10共11次)后把自己关闭。
3.2关闭所有协程调用StopAllCoroutines();方法即可。
4嵌套使用协程如图,启动协程Save后通过 yield return StartCoroutine(Save2());启动协程Save2();
4.1执行结果如图
4.2嵌套调用有坑请注意千万不能在项目中并且项目没保存时做这样调用试用,不信可以试试如图做的小实验
后果是这样
不止协程,其它地方做函数嵌套调用也要加结束条件上面试无限调用下去的后果。