【Unity基础】协程 Coroutine
妙妙的虚拟宝盒
编辑于 2023年05月22日 19:07
收录于文集
共16篇

      在Unity中,协程(Coroutine)是一种特殊的函数,允许您在不中断主线程的情况下,以非阻塞的方式执行代码。可以用于执行异步操作、延时执行、动画效果和复杂的任务分解。

      协程可以在一段时间后恢复执行,或者等待特定条件满足后再继续执行。这使得您可以在一帧或多帧之间分散执行耗时操作,从而避免造成游戏卡顿或阻塞。协程只能在继承自 的类中使用,并且只能在主线程中执行。

      下面是一个简单的示例代码,演示了如何在Unity中声明一个协程:

代码块
C#
自动换行
复制代码
//创建一个函数,并使用返回类型为 IEnumerator 的关键字
IEnumerator MyCoroutine()
{
    // 协程的逻辑代码
    yield return null; // 等待一帧
    // 继续执行逻辑代码
    yield return new WaitForSeconds(2); // 等待2秒钟
    // 继续执行逻辑代码
}
复制成功

下面是一个简单的示例代码,演示了如何在Unity中打开和关闭协程:

代码块
C#
自动换行
复制代码
 // 启动一个协程,并接收返回值
Coroutine m_Coroutine = StartCoroutine(MyCoroutine());
// 停止一个协程
StopCoroutine(m_Coroutine);
// 停止所有正在运行的协程。
StopAllCoroutines();
复制成功

在协程中,您可以使用不同的 语句来控制流程的等待和恢复。一些常用的 语句包括:

  • yield return null;:等待一帧后继续执行。

  • yield return new WaitForSeconds(time);:等待指定的时间(以秒为单位)后继续执行,time是为float类型。

  • yield return new WaitForFixedUpdate();:等待下一次固定帧更新后继续执行。

  • yield return StartCoroutine(otherCoroutine);:等待其他协程完成后继续执行,otherCoroutine是声明的协程函数。