Unity 协程实现的一些原理

本文探讨了Unity协程的工作原理,重点解释了IEnumerator迭代器如何保存函数并按顺序执行,以及yield关键字如何将代码段转化为可执行的函数。虽然作者对C#语言的深入理解仍有待提高,但已理解yield return null如何在每帧检查条件并执行后续代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

曾被问道  Unity 协程是如何知道条件是否满足的。

直到看了一个讲师的视频后才明白一些。

IEnumerator  迭代器是一个容器,可以装一个一个的函数,
依次执行每个函数(即:MoveNext()),每个函数会有一个返回值,
返回值会保存在  IEnumerator.Current对象里。

yield return null;
yield 是单独存在的,yield是yield,return null是return null。 yield做了什么事情呢?
yield把它之前的代码 “Debug.Log("111111111");”和 “return 1;”做成一个函数放到IEnumerator容器中

然后在更新函数里每帧判断是否满足条件,满足就开始执行下一个函数。

由于对C#语言还做不到深入的理解,迭代器到底咋回事不清楚,所以讲师讲到的明白,其它的条件还是不会实现。

 

以下是测试代码:

public class CoroutineTest : MonoBehaviour
{
    IEnumerator e = null;

    //IEnumerator  迭代器是一个容器,可以装一个一个的函数,
    //依次执行每个函数,每个函数会有一个返回值,
    //返回值会保存在  IEnumerator.Current对象里。

    //yield return null;
    //
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值