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

相关推荐
阿松爱学习6 小时前
【Unity开发】监听Scene场景事件
unity·c#
xiaogai_gai14 小时前
BOM 物料清单同步实战:金蝶云星空 → 四化智造 MES 修改场景深度拆解
unity·游戏引擎
淡海水17 小时前
03-03-架构篇-SGen GC架构解析
unity·架构·c#·gc·sgen
/**书香门第*/18 小时前
Cocos Creator 打螺丝游戏的实现
游戏引擎·cocos2d·螺丝·打螺丝
萌萌的提莫队长1 天前
Unity相机捕捉,图像识别,抠像+合成
opencv·unity
mxwin2 天前
Unity Shader 光线追踪原理与实战案例
unity·游戏引擎
地狱为王3 天前
Unity使用DPDFNet实现实时语音增强(降噪)
unity·语音增强·降噪·dpdfnet
平行云PVT3 天前
国产信创实时云渲染解决方案:如何实现数字孪生与三维应用云化部署?
unity·webrtc·unreal engine·实时云渲染·国产信创·摩尔线程·砺算科技
夏炎黄3 天前
Terrain地形剪裁
unity
小贺儿开发3 天前
DeepSeek + Codex + MCP:Unity 游戏开发实测
科技·游戏·unity·ai·程序员·编程·deepseek