协程的嵌套
与 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 均会被停止。
在父级停止时依旧保持运行
若您希望 external 在 MyCoroutine 停止后依旧保持运行状态,您可以通过调用 Coroutine.UnaffectedByParentStop 来实现。