引用 Unity3D 中的众多协程之一?

Refer to one of many coroutines in Unity3D?

有没有办法让一个变量指向 Unity3D 中 C# 中的多个协程之一?

public class Example : MonoBehaviour
{
    ? something ?  crt;

    private IEnumerator CoroutineA()
    {
    }

    private IEnumerator CoroutineB()
    {
    }

    void Start()
    {
        crt = CoroutineA;
        StartCoroutine(crt);
    }
}

您要查找的类型是delegate。委托类似于函数指针,并不特定于Unity3D。

public class Example : MonoBehaviour
{
    private delegate IEnumerator CoroutineDelegate();

    private IEnumerator CoroutineA()
    {
    }

    private IEnumerator CoroutineB()
    {
    }

    public void Start()
    {
        CoroutineDelegate crt = CoroutineA;
        StartCoroutine(crt());
    }
}

简单地说,利用StartCoroutine函数只需要一个IEnumerator对象来启动相应的协程。

这意味着您可以创建 IEnumerator 类型的变量并将协程的 return 值分配给它们(回想一下,协程确实是一个生成器,即 returns IEnumerator).

然后,只需对变量调用 StartCoroutine。 在您的示例中,字段 crt 的类型应为 IEnumerator。在你的 Start 方法中,你应该像这样分配给它:

crt = CoroutineA();

然后如果你想启动它分配的协程,这样做:

StartCoroutine (crt);