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下一步的逻辑

相关推荐
zyh______3 小时前
C#语法糖(按照实用性排序)
unity·c#
avi91116 小时前
[AI教做人]CinemachineCamera 各项调整配置参数入门 + Profiler
unity·游戏开发·camera·cinemachine·visual camera·镜头配置
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 16:纹理走样、Mipmap、三线性插值、各向异性过滤原理全解
unity·游戏引擎·godot·图形渲染·three.js·opengl·unreal
2301_767113982 天前
Superpowers 游戏引擎从零开发实战指南
游戏引擎
吴梓穆2 天前
untiy TextMeshPro (TMP) text 操作 中文字符集 字体材质操作(添加纹理 添加描边 添加阴影)
unity
想你依然心痛2 天前
嵌入式单元测试:Unity/CMock框架与硬件在环测试——测试驱动、桩函数
unity·单元测试·游戏引擎
yangmu32032 天前
《星露谷物语》MOD配置与实战安装综合指南
游戏·游戏引擎·游戏程序
xcLeigh2 天前
Unity基础:Game视图详解——游戏预览、分辨率模拟与性能显示
游戏·unity·游戏引擎·音频·视频·game·play模式
ZJU_fish19962 天前
全局光照/阴影的几个常见问题
游戏引擎·图形渲染
IT·陈寒2 天前
Superpowers 游戏引擎核心应用场景与落地指南
游戏引擎