Unity 协程底层原理解析
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 协程底层原理解析相关推荐
- 浅析Unity协程实现原理
介绍 协程Coroutine在Unity中一直扮演者重要的角色.可以实现简单的计时器.将耗时的操作拆分成几个步骤分散在每一帧去运行等等,用起来很是方便. 但是,在使用的过程中有没有思考过协程是怎么实现 ...
- Unity 协程(Coroutine)原理与用法详解
前言: 协程在Unity中是一个很重要的概念,我们知道,在使用Unity进行游戏开发时,一般(注意是一般)不考虑多线程,那么如何处理一些在主任务之外的需求呢,Unity给我们提供了协程这种方式 为啥在 ...
- Unity 协程的原理
协程不是多线程,协程还是在主线程里面(注:在Unity中非主线程是不可以访问Unity资源的) 1.线程.进程和协程的区别 进程有自己独立的堆和栈,即不共享堆也不共享栈,进程由操作系统调度 线程拥有自 ...
- 【Unity】Unity协程(Coroutine)的原理与应用
文章目录 前言 一.什么是协程 二.应用场景 1.异步加载资源 2.将一个复杂程序分帧执行 3.定时器 三.协程的使用 注意事项 四.Unity协程的底层原理 1. 协程本体:C#的迭代器函数 2. ...
- Unity协程(Coroutine)原理深入剖析
Unity协程(Coroutine)原理深入剖析 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 记得去年6月份刚开始实习的时候,当时要我写网 ...
- Unity 的协程的原理
Unity是一款非常强大的游戏引擎,它支持多种编程语言,其中最常用的语言是C#.在Unity中,协程是一种非常强大的功能,它可以让我们在游戏中实现各种各样的效果.本文将详细介绍Unity协程的原理,并 ...
- unity update 协程_Unity 协程的原理
Unity 协程的原理 发布时间:2019-06-13 18:45, 浏览次数:1118 , 标签: Unity 协程不是多线程,协程还是在主线程里面(注:在Unity中非主线程是不可以访问Unity ...
- Unity协程实现分析以及Lua协程与Unity协程的混合使用
1,节选翻译一篇stackoverflow关于Unity协程实现的讨论 - The big clues are in the C# version. Firstly, note that the re ...
- Unity(协程是什么,怎么用)
c#协程 概:早就听闻Unity协程有必要学一手,但我还是搁置了好久,直到这个搓东西的时候被迫用了多线程发现解决不了,百度一手得知我不得不学一下协程了.在搜集了一些资料后发现知乎大佬的博文香的一批(我 ...
最新文章
- System.arraycopy(src, srcPos, dest, destPos, length) 与 Arrays.copyOf(original, newLength)区别
- HTML全面深入学习-select的optgroup分组
- 如何扩大临linux零时空间,手把手教你如何扩充linux系统空间
- macappstore登不上去_武功山观星归来,缆车登顶,不徒步攻略!
- 高中计算机结业考试总结,高中考试总结
- fisher-yates_使用Fisher-Yates随机播放算法以O(n)时间随机播放给定数组
- scala 单元测试_Scala中的法律测试简介
- ABP入门系列(10)——扩展AbpSession
- 【转载】:单例设计模式
- Spring学习笔记:配置单数据源
- java编程获取屏幕分辨率_Java编程获取当前屏幕分辨率的方法示例
- 标准c语言有几个关键字,C语言有多少个关键字
- 合并查找到的文件,至新的文件中
- 秒变金庸风 | NLP文本风格迁移
- 苹果手机怎么编程c语言,C语言编程ios版下载_C语言编程苹果版
- html打开后繁体字怎么变成规范,对HTML标准的思考 - 记解决H5随机显示简繁体汉字问题...
- 不使用脚手架搭建vue项目
- 洛谷P1957口算练习题
- python代码设置超参数_超参数调优总结,贝叶斯优化Python代码示例
- Selenium版本与浏览器版本