中央管理器GameManager
中央管理器GameManager
背景
框架内各个模块或系统如果都交由场景中的物体去创建实例,会引起一系列问题,最大的问题是各系统的创建顺序,很直观的一个例子,音效系统的配置参数需要访问数据配置系统,数据配置系统又需要通过资源管理系统读取对应的全局配置表,所以创建顺序应该是先资源管理系统->数据配置系统->音效系统。如果通过Awake()去完成创建,维护创建的顺序就会变得很困难。使用一个脚本控制创建流程是较好的解决办法。
GameManager的主要任务就是维护模块创建顺序,维护各模块的生命周期,传递unity内的生命周期函数。
使用
声明一个模块或系统
继承IMonoManager接口,并实现接口函数。(模块内通过接口函数去访问unity内生命周期函数,GameManager中会实现对应的生命周期函数)
1 |
|
GameManager中注册对应模块或系统
向GameManager的Awake()中声明需求模块,即可完成需求模块的创建时机和生命周期函数的实现。
1 | public class GameManager |
版本管理功能
由于版本管理需求暂时未有太大内容量,故在GameManager中进行,后续可以进行模块化设计。
1 | public class GameManager |
内部实现
GameManager中维护一个IMonoManager列表
1 | private readonly List<IMonoManager> _managerList = new List<IMonoManager>(); |
GameManager是继承自mono的,场景中会有实例化的GameManager对象,通过自身Update等unity内的生命周期函数去派发ImonoManager列表内各模块的接口函数。
以Update()函数的实现和派发举例:
1 | private void Update() |
评论