跳到主要内容

协程的嵌套

与 Unity 协程不同的是,winS.Unity.Coroutine 支持嵌套,您可以在协程中等待其它协程。

以下示例中,MyCoroutine 将等待外部协程 external 运行完毕后再继续向下运行。

此时,MyCoroutine 被视为 external 的父级。

using System.Collections;
using UnityEngine;
using Coroutine = winS.Unity.Coroutine;

public class Example_Nesting
{
private Coroutine coroutine;

public void Start(Coroutine external)
{
coroutine = Coroutine.Start(MyCoroutine(external));
}

public void Stop()
{
coroutine.Stop();
}

private IEnumerator MyCoroutine(Coroutine coroutine)
{
Debug.Log("MyCoroutine Start");
yield return coroutine;
Debug.Log("MyCoroutine End");
}
}

Stop 方法被调用,则 MyCoroutine 和外部协程 external 均会被停止。

在父级停止时依旧保持运行

若您希望 externalMyCoroutine 停止后依旧保持运行状态,您可以通过调用 Coroutine.UnaffectedByParentStop 来实现。