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

相关推荐
凯尔3156 小时前
Unity简单涂料实现
unity·游戏引擎·图形渲染
刘步权9 小时前
KY-RTI分布仿真技术:第十三章 基于Unity的多语言三维态势仿真——以 Island Assault(夺岛突击)想定为例
unity·游戏引擎·仿真·态势·ky-rti·hla·rti
ellis197011 小时前
C#/Unity清理非托管资源
unity·c#
玖玥拾1 天前
Unity 3D 笔记(十四)Unity/C# Socket 网络笔记3
服务器·网络·unity·c#
Python私教1 天前
Godot图片怎么导入?PNG、压缩、Mipmap与Reimport一次讲清
游戏引擎·godot
玖玥拾1 天前
Unity 3D 笔记(十七)Unity/C# Socket 网络笔记6
服务器·网络·unity·c#
寒水馨1 天前
Linux下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_linux.x86_64.zip)
linux·游戏引擎·godot·游戏开发·2d游戏·3d游戏·godot engine
寒水馨1 天前
macOS下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_macos.universal.zip)
macos·3d·游戏引擎·godot·跨平台·游戏开发·2d
电子云与长程纠缠2 天前
UE中使用TGuardValue与TInlineComponentArray数据结构
开发语言·数据结构·学习·ue5·游戏引擎
玖玥拾2 天前
Unity 3D 笔记(十二)Unity/C# Socket 网络笔记1
网络·unity·c#