【问题标题】:Refer to one of many coroutines in Unity3D?参考 Unity3D 中的众多协程之一?
【发布时间】:2016-04-05 15:26:04
【问题描述】:

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

public class Example : MonoBehaviour
{
    ? something ?  crt;

    private IEnumerator CoroutineA()
    {
    }

    private IEnumerator CoroutineB()
    {
    }

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

【问题讨论】:

  • "回忆一下 Unity 有一个特殊的情况,FuncAction"我应该回忆什么?

标签: c# unity3d coroutine ienumerator


【解决方案1】:

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

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

    private IEnumerator CoroutineA()
    {
    }

    private IEnumerator CoroutineB()
    {
    }

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

【讨论】:

    【解决方案2】:

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

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

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

    crt = CoroutineA();
    

    那么如果你想启动它分配的协程,可以这样操作:

    StartCoroutine (crt);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-21
      • 2014-03-05
      • 2018-08-10
      • 2020-07-23
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      相关资源
      最近更新 更多