内部结构
MonoSystem
MonoSystem是继承MonoBehaviour的,声明几个action,在MonoBehaviour的声明周期内调用,实现了不继承MonoBehaviour也可以用mono的生命周期。
包括以下几个方法可供外部调用:
Init:初始化,获取MonoSystem的实例
AddUpdateListener:添加Update监听
RemoveUpdateListener: 移除Update监听
AddLateUpdateListener:添加LateUpdate监听
RemoveLateUpdateListener:移除LateUpdate监听
AddFixedUpdateListener:添加FixedUpdate监听
RemoveFixedUpdateListener:移除FixedUpdate监听
这几个方法又是如何做到在mono声明周期内调用的呢?
如下:
private void Update()
{
updateEvent?.Invoke();
}
private void LateUpdate()
{
lateUpdateEvent?.Invoke();
}
private void FixedUpdate()
{
fixedUpdateEvent?.Invoke();
}
协程
声明一个字典,把用的协程存放起来,进行统一管理,字典的结构是这样的Dictionary<object, List<Coroutine>>,对象作为key,对象对应的协程list作为value。
这其中也用到之前的对象池系统,主要是用在协程的停止和启动,用来回收协程
对携程相关的操作方法包括以下几个:
Start_Coroutine:启动一个协程
Start_Coroutine(重载):启动一个协程序并且绑定某个对象
Stop_Coroutine:停止一个协程序
Stop_Coroutine(重载):停止一个协程序并基于某个对象
StopAllCoroutine:整个系统全部协程都会停止
只有基于对象的操作,才会用到协程的字典和对象池,普通的协程启动和停止就是单纯的基于MonoSystem对象。