有没有办法让变量指向Unity3D中C#中的一些协同程序?
public class Example : MonoBehaviour
{
? something ? crt;
private IEnumerator CoroutineA()
{
}
private IEnumerator CoroutineB()
{
}
void Start()
{
crt = CoroutineA;
StartCoroutine(crt);
}
}
答案 0 :(得分:4)
您要查找的类型是delegate。委托类似于函数指针,并不特定于Unity3D。
public class Example : MonoBehaviour
{
private delegate IEnumerator CoroutineDelegate();
private IEnumerator CoroutineA()
{
}
private IEnumerator CoroutineB()
{
}
public void Start()
{
CoroutineDelegate crt = CoroutineA;
StartCoroutine(crt());
}
}
答案 1 :(得分:0)
简单地说,使用 StartCoroutine
函数只需要一个 IEnumerator
对象来启动相应的协程。
这意味着您可以创建 IEnumerator
类型的变量并将协程的返回值分配给它们(回想一下协程确实是一个生成器,即返回 IEnumerator
)。
然后,只需对变量调用 StartCoroutine
。
在您的示例中,字段 crt
的类型应为 IEnumerator
。在您的 Start
方法中,您应该像这样分配给它:
crt = CoroutineA();
那么如果你想启动它分配的协程,就这样做:
StartCoroutine (crt);