1、协程

unity是单线程设计的游戏引擎,unity实际上有多条渲染线程,但对于unity调用我们编写的游戏脚本,都是放在一个主线程当中进行调度的。因此对于我们写的游戏脚本unity是单线程的。
协程不是进程或者线程,它的执行过程更类似于一个函数调用。unity会在运行过程中每一帧的调用这个协程。但unity同时也需要多线程操作,因此引入了协程的概念。通过一个脚本运行多个同时运行的程序段。

2、运行流程

unity内部有一个表格,它记录了我们程序中所有的协程,我们知道unity是一个实时运行的游戏引擎,在理想的情况下,大概会运行我们60次这样的脚本。当unity每次去执行游戏循环的时候就去执行这个CountCo这样一个协程

当上面的函数执行完毕后,unity就会把CountCo从协程表中剔除

3、常用法


协程运行在我们事件周期中的GameLogic部分

  • yield null 表示等待一帧画面
  • yield waitForSeconds 表示等待指定的秒数
  • yield WWW 表示等待一个下载完毕
  • yeild StartCoroutine 表示等待使用StartCoroutine启动的协程




暂停协程,当第一个协程执行完后再执行另外一个协程

IEnumerator Start(){    yield return Count();//暂停协程for (int i = 1; i <= 3; i++){          print(i);yield return new WaitForSeconds(1);}}IEnumerator Count(){for (int i = 1; i <= 3; i++){print("scend"+i);yield return new WaitForSeconds(1);}}


下面这个是真实的协程运行情况

未完待续。。。。。。。。。。。。。

Unity 协程底层原理解析相关推荐

  1. 浅析Unity协程实现原理

    介绍 协程Coroutine在Unity中一直扮演者重要的角色.可以实现简单的计时器.将耗时的操作拆分成几个步骤分散在每一帧去运行等等,用起来很是方便. 但是,在使用的过程中有没有思考过协程是怎么实现 ...

  2. Unity 协程(Coroutine)原理与用法详解

    前言: 协程在Unity中是一个很重要的概念,我们知道,在使用Unity进行游戏开发时,一般(注意是一般)不考虑多线程,那么如何处理一些在主任务之外的需求呢,Unity给我们提供了协程这种方式 为啥在 ...

  3. Unity 协程的原理

    协程不是多线程,协程还是在主线程里面(注:在Unity中非主线程是不可以访问Unity资源的) 1.线程.进程和协程的区别 进程有自己独立的堆和栈,即不共享堆也不共享栈,进程由操作系统调度 线程拥有自 ...

  4. 【Unity】Unity协程(Coroutine)的原理与应用

    文章目录 前言 一.什么是协程 二.应用场景 1.异步加载资源 2.将一个复杂程序分帧执行 3.定时器 三.协程的使用 注意事项 四.Unity协程的底层原理 1. 协程本体:C#的迭代器函数 2. ...

  5. Unity协程(Coroutine)原理深入剖析

    Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网 ...

  6. Unity 的协程的原理

    Unity是一款非常强大的游戏引擎,它支持多种编程语言,其中最常用的语言是C#.在Unity中,协程是一种非常强大的功能,它可以让我们在游戏中实现各种各样的效果.本文将详细介绍Unity协程的原理,并 ...

  7. unity update 协程_Unity 协程的原理

    Unity 协程的原理 发布时间:2019-06-13 18:45, 浏览次数:1118 , 标签: Unity 协程不是多线程,协程还是在主线程里面(注:在Unity中非主线程是不可以访问Unity ...

  8. Unity协程实现分析以及Lua协程与Unity协程的混合使用

    1,节选翻译一篇stackoverflow关于Unity协程实现的讨论 - The big clues are in the C# version. Firstly, note that the re ...

  9. Unity(协程是什么,怎么用)

    c#协程 概:早就听闻Unity协程有必要学一手,但我还是搁置了好久,直到这个搓东西的时候被迫用了多线程发现解决不了,百度一手得知我不得不学一下协程了.在搜集了一些资料后发现知乎大佬的博文香的一批(我 ...

最新文章

  1. System.arraycopy(src, srcPos, dest, destPos, length) 与 Arrays.copyOf(original, newLength)区别
  2. HTML全面深入学习-select的optgroup分组
  3. 如何扩大临linux零时空间,手把手教你如何扩充linux系统空间
  4. macappstore登不上去_武功山观星归来,缆车登顶,不徒步攻略!
  5. 高中计算机结业考试总结,高中考试总结
  6. fisher-yates_使用Fisher-Yates随机播放算法以O(n)时间随机播放给定数组
  7. scala 单元测试_Scala中的法律测试简介
  8. ABP入门系列(10)——扩展AbpSession
  9. 【转载】:单例设计模式
  10. Spring学习笔记:配置单数据源
  11. java编程获取屏幕分辨率_Java编程获取当前屏幕分辨率的方法示例
  12. 标准c语言有几个关键字,C语言有多少个关键字
  13. 合并查找到的文件,至新的文件中
  14. 秒变金庸风 | NLP文本风格迁移
  15. 苹果手机怎么编程c语言,C语言编程ios版下载_C语言编程苹果版
  16. html打开后繁体字怎么变成规范,对HTML标准的思考 - 记解决H5随机显示简繁体汉字问题...
  17. 不使用脚手架搭建vue项目
  18. 洛谷P1957口算练习题
  19. python代码设置超参数_超参数调优总结,贝叶斯优化Python代码示例
  20. Selenium版本与浏览器版本

热门文章

  1. 【Linux c】日期及时间戳的生成和转换
  2. CentOS8基础篇1:VMware 安装CentOS8 教程
  3. emui11基于鸿蒙系统,emui11是鸿蒙系统吗
  4. Matlab中添加网格线和编辑布局
  5. 专科就业工资php,专科工资高的十大专业 大专学什么专业就业前景好
  6. 【Halcon】Halcon语法 与 《halcon工业应用实用教程》
  7. python设计模式(十):享元模式
  8. 快来get这个ORM知识!!
  9. 如何减少疾病恐惧 ?
  10. php各种主流框架的比较