今天需要在非Mono类中使用协程,发现这个函数是在MonoBehaviour类中的,因此在这一方面查询了一些资料,最后找到了解决办法。
首先我们需要一个Mono类和一个非Mono类,我们的需求是在非Mono类中调用协程。
我们需要在非Mono类中定义public变量mono,然后将Mono类的this关键字赋值给它即可。
代码如下:
public class MonoClass : MonoBehaviour
{
void Start()
{
NonMonoClass.Instance.mono = this;
}
}
public class NonMonoClass
{
public MonoBehaviour mono;
private static NonMonoClass _instance;
public static NonMonoClass Instance
{
get
{
if(_instance == null)
{
_instance = new NonMonoClass();
}
return _instance;
}
}
public void Test()
{
mono.StartCoroutine(testFunction());
}
IEnumerator testFunction()
{
yield return new WaitForSeconds(3f);
Debug.Log("Test!");
}
}
这样就可以在非Mono类中调用mono成员的协程函数了。