什么是协程
协程允许您将任务分散到多个帧中。在 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());//只有后面的函数或协程执行完才能执行下一行代码