参考: https://www.jianshu.com/p/67f498cb839b
话不多说,直接上代码
1 using System.Collections; 2 using UnityEngine; 3 4 5 internal class CoroutineManagerMonoBehaviour : MonoBehaviour 6 {} 7 8 public class CoroutineManager 9 { 10 private static CoroutineManagerMonoBehaviour coroutineManagerMonoBehaviour; 11 //静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作。 12 //将在创建第一个实例或引用任何静态成员之前自动调用静态构造函数。 13 static CoroutineManager() 14 { 15 Init(); 16 } 17 18 public static void DoCoroutine(IEnumerator routine) 19 { 20 coroutineManagerMonoBehaviour.StartCoroutine(routine); 21 } 22 23 private static void Init() 24 { 25 var g = new GameObject(); 26 g.name = "CoroutineMangaer"; 27 coroutineManagerMonoBehaviour = g.AddComponent<CoroutineManagerMonoBehaviour>(); 28 GameObject.DontDestroyOnLoad(g); 29 } 30 }
使用方法:
在某个自定义类中使用
CoroutineManager.DoCoroutine(“自定义类中的携程方法”);
Unity自定义类使用携程--自身不继承MonoBehaviour
原文:https://www.cnblogs.com/AMQF/p/14852038.html