unity中非monobehaviour类中无法使用StartCoroutine协程的解决方法

在Unity中,有些类不继承自MonoBehaviour,若想要在这些类中使用StartCoroutine,则可以在类中新建一个继承MonoBehaviour的空类,再把这个空类当成组件挂到一个空对象上,然后就可以开启协程了

public class MonoStub : MonoBehaviour

{

}


new GameObject().AddComponent().StartCoroutine("Test1");
 
示例:

    // 创建一个继承 MonoBehaviour 的空类
    private class MonoStub:MonoBehaviour
    {

    }


    // 把计时器协程挂载到这个空类的组件上
    public void TimeCounter()
    {
        GameObject MonoStubTemp = GameObject.Find("MonoStubTemp");
        if (MonoStubTemp == null)
        {
            MonoStubTemp = new GameObject();
            MonoStubTemp.name = "MonoStubTemp";
            MonoStubTemp.AddComponent();
        }
        MonoStubTemp.GetComponent().StartCoroutine(TimerProcess());
        Debug.Log("开始计时器协程");
    }

 

你可能感兴趣的:(Unity3D,C#)