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

相关推荐
天人合一peng1 天前
unity 生成标记根据背景色标记变色
unity·游戏引擎
天人合一peng1 天前
unity 生成标记根据背景色变色为明显的颜色
unity·游戏引擎
魔士于安1 天前
Unity 超市总动员 超市收银台 超市货架 超市购物手推车 超市常见商品
游戏·unity·游戏引擎·贴图·模型
CandyU21 天前
Unity —— 数据持久化
unity·游戏引擎
zh路西法1 天前
【Unity实现Oneshot胶卷显形】游戏窗口化与Win32API的使用
游戏·unity·游戏引擎
迪捷软件1 天前
显控系统虚拟仿真的工程化路径
游戏引擎·cocos2d
凡情1 天前
android隐私合规检测
android·unity
小贺儿开发1 天前
Unity3D 本地 Stable Diffusion 文生图效果演示
人工智能·unity·stable diffusion·文生图·ai绘画·本地化
Swift社区1 天前
传统游戏引擎 vs 鸿蒙 System 架构
架构·游戏引擎·harmonyos