协程(Coroutine)的概念存在于很多编程语言,例如Lua、ruby等。而由于Unity3D是单线程的,因此它同样实现了协程机制来实现一些类似于多线程的功能,但是要明确一点协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。

协程类型IEnumerator 在内部方法使用 yield return 语句,直观的说语句说在位置便是协程暂停,并且将控制权移交给Unity引擎以及之后继续执行余下逻辑的地方。

例如 IEnumerator Method(){

  int i=0;

  while(i++<10000){

    yield return null; (如果没有这个,主程中将执行1w次后才返回update,如果开启这个则每一帧执行一次)

    }

  yield return null;

}

协程开启函数StartCoroutine(IEnumerator routine)(重载 StartCoroutine(string methodName,object value=null)任何类型都派生自Object,value有一个null因此可以直接StartCoroutine(string methodName));

协程停止函数 StopCoroutine(IEnumerator routine)类似Start。需要注意的是,StopCoroutine方法只能用来停止同一脚本内传入string类型相同的协程,并且StartCoroutine方法只能用string传入才能被Stop。

使用协程实现延时效果:

WaitForSeconds(float waitTime):能够延迟waitTime时间;

WaitForFixedUpdate:暂停协程直到下一个FixedUpdate时才会继续执行;

WaitForEndOfFrame:暂停协程至直到这一帧结束和所有相机和GUI被渲染;

WaitUntil(delegate bool):暂停协程直到委托类型函数返回一个true;

WaitWhile(delegate bool):暂停协程直到委托类型函数返回一个false。

最新文章

  1. Reveal for mac延长30天试用的简单方法
  2. 解决 WPF AllowsTransparency = true 和 Webbrowser 等控件显示冲突
  3. SPI协议及工作原理分析
  4. ASSM 的三级位图结构
  5. CF#335 Lazy Student
  6. zabbix如何实现微信报警 转载
  7. MVC中的奇葩错误,参数转对象
  8. Linux下生成动态链接库是否必须使用 -fPIC 的问题[转]
  9. Robotium学习笔记一
  10. HDFS Federation与HDFS High Availability详解
  11. Oracle Golden Gate - 概念和机制 (ogg)
  12. phpcms在自定义模块中的自定义标签分页
  13. 一键部署mono 免费空间
  14. Linux使用期间命令积累
  15. express之req res
  16. luogu P2553 [AHOI2001]多项式乘法
  17. java对文件的检索
  18. B树、B-树、B+树、B*树相关
  19. Easyui的DataGrid 清除所有勾选的行。
  20. 牛客国庆集训派对Day3 I Metropolis

热门文章

  1. caffe数据集LMDB的生成
  2. matlab 中figure的图像 抗锯齿
  3. linux 桥接模式下 固定ip 设置
  4. web渗透系列--信息收集
  5. No application found. Either work inside a view function or push an application context.
  6. BZOJ - 2243 染色 (LCT链修改+链查询)
  7. Android 在 4G 下访问 IPV6 慢的解决方案
  8. profile 配置文件修改后如何生效?
  9. 手写ORM
  10. jodd cache实现缓存超时