引用 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);
有没有办法让一个变量指向 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);