IEnumerator

什么是协程

协程允许您将任务分散到多个帧中。在 Unity 中,协程是一种方法,它可以暂停执行并将控制权返回给 Unity,然后在下一帧从中断处继续。

在大多数情况下,当您调用一个方法时,它会运行到完成,然后将控制权返回给调用方法,以及任何可选的返回值。这意味着在方法中发生的任何操作都必须在单个帧更新中发生。

在您希望使用方法调用来包含程序动画或一段时间内的一系列事件的情况下,您可以使用协程。

但是,重要的是要记住协程不是线程。在协程中运行的同步操作仍然在主线程上执行。如果您想减少在主线程上花费的 CPU 时间,避免在协程中阻塞操作与在任何其他脚本代码中一样重要。如果您想在 Unity 中使用多线程代码,请考虑C# Job System。

如果您需要处理长时间的异步操作,例如等待 HTTP 传输、资产加载或文件 I/O 完成,最好使用协程。

注意点

1.当 MonoBehaviour 被销毁或 MonoBehaviour 附加到的 GameObject 被禁用时,协程也会停止。
当 MonoBehaviour 被禁用时,协程不会停止。

2.Yield return

private IEnumerator Test()
{
    yield return new WaitForSeconds(2f);
    idx += 10;
    yield return null;
}

private IEnumerator TEST3()
{
    idx = 0;
    yield return StartCoroutine(Test());
    yield return null;
    Debug.Log(idx);
}

输出结果:
10;

yield return StartCoroutine(Test());//只有后面的函数或协程执行完才能执行下一行代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值