赞
踩
本文仅作学习笔记分享,不作任何商业用途,侵权删
本文结合唐老狮,unity官方手册,麦扣等教程内容,引用会标明输出,如有不足还请斧正
协程允许您将任务分散到多个框架中。在Unity中,协程是一种可以暂停执行并将控制权返回给Unity的方法,但随后在它离开的地方继续执行。
在大多数情况下,当您调用一个方法时,它会运行到完成,然后将控制权返回给调用方法,以及任何可选的返回值。这意味着在方法中发生的任何动作都必须在单个帧更新中发生。
在希望使用方法调用来包含过程动画或随时间变化的事件序列的情况下,可以使用协程。
然而,重要的是要记住协程不是线程。在协程内运行的同步操作仍然在主线程上执行。如果希望减少主线程上花费的CPU时间,避免在协程中阻塞操作与在任何其他脚本代码中一样重要。如果你想在Unity中使用多线程代码,可以考虑使用c#作业系统。
如果需要处理长时间的异步操作,比如等待HTTP传输、资产加载或文件I/O完成,那么最好使用协程。
别看文字这么多,实际上我画个图就明白了:
黑色代表函数的整个生命周期,红色代表其他函数的生命周期
就相当于把一个函数给分步骤,可穿插地执行了
本文以协程函数为例
写成函数需要一个IEnumerable接口作为返回值类型,yiield return关键字作返回
常见可以返回的内容如下:来源于唐老狮笔记
我在这个函数中写了如下逻辑,对象绕y轴每次顺时针旋转对象30°
调用关键词为startcoroutine,有三个重载,推荐如下这个:
所以 可以直接传入该协程函数:
c#迭代器方法,起暂停作用,就是这玩意:
你可以直接调用其中的方法:
当然obj当前为空,因为yield return是一个方法 obj不能直接存方法,要通过委托
MoveNext会调用一次函数内容,也就是遇到yield return就会停止
unity内部实现方法,会在对应时机调度
比如yield return方法都来源于一个基类,而这个基类内容用户是加密看不到的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。