Unity协程的原理

协程的本质

1.协程函数本体:就是一个能中间暂停的返回函数,如果不通过开启协程方法执行协程,Unity的协程调度器是不会帮我们管理协程函数的,但是我们可以手动执行

例如:

cs 复制代码
class TestClass
{

}

IEumerator Test()
{
    printf("第一次执行");
    yield return 1;
    printf("第二次执行");
    yield return 2.3f;
    printf("第三次执行");
    yield return "222";
    printf("第四次执行");
    yield return new TestClass();
}

private void Start()
{
    IEumerator ie = Test();
    ie.MoveNext();
    print(ie.Current);//可以得到yield return返回的内容
}

输出结果:

cs 复制代码
第一次执行
1

2.协程调度器:是unity内部实现的,会在对应时机帮我们执行协程函数

Unity只实现了协程调度部分,协程本质上就是一个C#迭代器方法

C#看到迭代器函数和yield return 语法糖,就会把一个函数变成"几部分",我们可以通过迭代器 从上到下遍历这"几部分",进行执行,就可以将一个函数的逻辑拆分成几部分进行执行

而协程调度器就是依据迭代器函数返回的内容进行之后的处理,例如yield return null,当调用开启协程函数后,Unity拿到了这个协程的迭代器内部就会等待一帧执行yield return null下一步的逻辑

相关推荐
魔士于安4 天前
unity 丑陋哥布林 哥布林有humannoid 动画没 带动画
unity·游戏引擎·材质·贴图·模型
小贺儿开发5 天前
Unity 家居视频遥控(细节优化)
科技·unity·程序员·udp·视频·工具·通信
淡海水5 天前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
小小数媒成员6 天前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
林川~016 天前
Unity新输入系统使用笔记
unity·input system
小贺儿开发6 天前
Unity 结合百度AI开放平台 手写文字识别
人工智能·科技·学习·unity·云服务·文字识别·手写文字
goujunwe7 天前
GEO 评估方法:如何自测你的内容,会不会被 AI 引用
搜索引擎·网络安全·游戏引擎·全文检索·中文分词
林川~017 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
yi碗汤园7 天前
MQTT消息队列遥测传输协议
网络·网络协议·unity
林川~017 天前
Unity 常用 API 与核心类全解:从生命周期到协程,附性能避坑清单(Unity 6 适配)
unity·游戏引擎·常用api