Unity_协程的本质和原理_协程的执行顺序

如果了解了C#的迭代器 那么对IEnumrator以及yield retrun这个类和语法糖语句并不陌生

IEnumrator是实现迭代器必须继承的接口 

yield return是C#的语法糖 我们不需要自己实现迭代器 通过这一句代码就可以直接实现迭代器

在迭代器的接口中 两个关键的成员MoveNext()函数 Current属性 是迭代器的核心 通过这两个成员的配合

可以实现比如对某个自定义类的迭代

那么,来拆分一下Unity协程

协程可以分成两部分:

1.协程函数本体

2.协程调度器

协程函数本体本质上就是一个迭代器函数,迭代器函数就是一步一步的return出去内容,而Unity的协程调度器就是根据yield return返回的内容 进行内部规则上的实现

MoveNext();//会执行函数中内容遇到 yield return为止的逻辑

扫描二维码关注公众号,回复: 15864611 查看本文章

Current;//得到 yield return 返回的内容

也就是说 协程函数本体 实现了执行代码"分步"的操作,Unity的协程调度器在内部根据返回值实现了"分时"的操作,两者结合起来就构成了我们的协程!!!

总结:

        你可以简化理解迭代器函数
        C#看到迭代器函数和yield return 语法糖
        就会把原本是一个的 函数 变成"几部分"
        我们可以通过迭代器 从上到下遍历这 "几部分"进行执行
        就达到了将一个函数中的逻辑分时执行的目的

        而协程调度器就是 利用迭代器函数返回的内容来进行之后的处理
        比如Unity中的协程调度器
        根据yield return 返回的内容 决定了下一次在何时继续执行迭代器函数中的"下一部分"

        理论上来说 我们可以利用迭代器函数的特点 自己实现协程调度器来取代Unity自带的调度器

PS:协程也是有一定的执行顺序的 通过MonoBehaviour可以直观的看到每一种yield return语句的执行顺序

猜你喜欢

转载自blog.csdn.net/m0_69778537/article/details/131874640