Unity3D 技术之 Unity3D 中的协程(Coroutine)详解 本文将详细介绍 Unity3D 中的协程(Coroutine)技术,包括为什么需要协程、协程的定义和工作原理、如何使用协程等方面的知识点。 一、为什么需要协程 在游戏中,有许多过程需要花费多个逻辑帧去计算。如果我们不使用多线程,那么我们就会遇到“密集”的流程和“稀疏”的流程的问题。例如,寻路计算量非常大,需要分割到不同的逻辑帧去进行计算,以免影响游戏的帧率。再如,游戏中的触发器,通常不做什么,但是一旦被调用就会做非常重要的事情。如果我们想创建一个能够历经多个逻辑帧的流程,那么我们需要使用协程技术。 二、协程的定义 从程序结构的角度来讲,协程是一个有限状态机。它不同于子例程(Subroutine),子例程一般可以指函数,函数是没有状态的,等到它 return 之后,它的所有局部变量就消失了。但是在协程中,我们可以在一个函数里多次返回,局部变量被当作状态保存在协程函数中,知道最后一次 return,协程的状态才别清除。简单来说,协程就是:你可以写一段顺序的代码,然后标明哪里需要暂停,然后在下一帧或者一段时间后,系统会继续执行这段代码。 三、协程的工作原理 协程函数的返回值是 IEnumerator,它是一个迭代器,你可以把它当成指向一个序列的某个节点的指针。IEnumerator 提供了两个重要的接口,分别是 Current(返回当前指向的元素)和 MoveNext()(将指针向前移动一个单位,如果移动成功,则返回 true)。yield 关键字是用来声明序列中的下一个值或者是一个无意义的值。如果使用 yield x(x 是指一个具体的对象或数值)的话,那么 movenext 返回为 true 并且 current 被赋值为 x,如果使用 yield break 使得 movenext()返回 false。 四、如何使用协程 使用协程可以使我们的代码变得更加简洁和高效。例如,我们可以使用协程来实现 time slicing,例如 A\* 算法可以在每个逻辑帧中只处理 open list 中一部分节点,来保证帧率不被影响。再如,我们可以使用协程来解决异步传输问题,例如下载文件时,等文件下载完毕之后再执行其他任务。 五、协程的优点 使用协程可以使我们的代码变得更加简洁和高效,提高了游戏的帧率和性能。同时,协程也可以使我们的代码变得更加灵活和可维护。 协程是 Unity3D 中一个非常重要的技术,能够帮助我们解决许多-game 中的难题。


























- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 化工行业详细讲解以及自动化设备方案.doc
- 关于php述职报告.docx
- 美国立维腾综合布线产品介绍PPT课件.ppt
- (源码)基于Android和Django的小清书校园论坛.zip
- 关于大数据技术与思路的介绍.pptx
- 2020软件开发程序员个人总结.docx
- 汽车网络营销的分析报告.pptx
- 大学生网络管理个人实习总结.docx
- 电子测量原理第10章线性系统频率特性和网络分析.ppt
- 研发管理的改善与项目管理.pptx
- 法律文书模板92.软件公司保密协议范本最新.doc
- 互联网公司经理述职报告.doc
- 电子商务运营平台筹建及策划方案资料.doc
- 自动化考试试题(杨敏).doc
- 出口退税软件填报流程.doc
- 常用软件计算机在药学中的应用.pptx


