网站建设推广咨询平台,石家庄企业网站建设,网站建设使用的技术,用手机制作app工具作用#xff1a;使不继承MonoBehaviour的类能够开启协程#xff0c;并且可以使用FixedUpdate、Update、LateUpdate进行每帧更新。
原理#xff1a; 1、在场景中创建一个继承MonoBehaviour的“执行者”脚本#xff0c;这个脚本就专门用来开启协程和监听帧更新。 2、Mono管理…作用使不继承MonoBehaviour的类能够开启协程并且可以使用FixedUpdate、Update、LateUpdate进行每帧更新。
原理 1、在场景中创建一个继承MonoBehaviour的“执行者”脚本这个脚本就专门用来开启协程和监听帧更新。 2、Mono管理器访问这个“执行者”脚本就可以实现所需的效果。
创建一个空物体挂载一个继承自MonoBehaviour 的脚本没有任何方法也可以
没有继承的那个脚本代码这样写
public void Show(){GameObject go GameObject.Find(MonoController);go.AddComponentMonoController().StartCoroutine(MyCoroutine());}IEnumerator MyCoroutine(){while (true){Debug.Log(协程执行中);yield return null;}}
就可以调用了
Mono管理器开启协程
public class MonoController : MonoBehaviour
{}
MonoManager 管理类自动创建场景物体并挂载继承有Mono的脚本
继承SingletonPatternBase 作为一个 单例存在
public class MonoManager : SingletonPatternBaseMonoManager
{private MonoManager() { }private MonoController monoController;public MonoController MonoController{get{if (monoController null){GameObject go new GameObject(typeof(MonoController).Name);monoController go.AddComponentMonoController();}return monoController;}}//一个专门让外部用来开启协程的方法public Coroutine StartCoroutine(IEnumerator routine){return MonoController.StartCoroutine(routine);}
Mono管理器停止协程
//停止协程的方法public void StopCoroutine(IEnumerator routine){MonoController.StopCoroutine(routine);}//停止协程的方法 重载public void StopCoroutine(Coroutine coroutine){MonoController.StopCoroutine(coroutine);}//停止所有协程的方法public void StopAllCoroutine(){MonoController.StopAllCoroutines();}
在具体的脚本里直接MonoManager.Instance.xxx方法就可以执行