今天笔者给大家发布一篇 Manager Of Managers框架的运用。自己的学习以及体会,欢迎大家指导问题:
GameManager(游戏管理者)
大单例:使用大单例的原因:单例设计模式不宜过多 难于管理 实例化的时候 很多都是在Awake()中,会出现类似软件危机的情况 、 调用的时候比较凌乱。);继承自 Mono。可以单方面与其它管理者进行访问、每个管理者的内部都 将 GameManager 作为成员变量进行定义,然后定义一个构造方法,在构造方法的内部进行一个赋值、因为是 在GameManager 中对每个管理者进行了一个实例化、所以构造方法的内部就像是一个回调。
(1)游戏的启动者,其它的管理者都做成成员变量放在GameManager 内 ,
(2)实例化的管理由 GameManager 在 Awake() 方法进行
(3)只有 GameManager 继承 MonoBehavir、其它管理类不需继承
(4)其它管理者想要单方面互相访问、只有通过GameManager提供的外部接口继续进行,共有的方法.同事与上下级关系之间是相互不认识的、
(5)使用多单例的原理 就是对外部提供接口。外部进行调用的时候只是进行调用接口
FactoryManager(工厂管理)
管理所有游戏资源的加载、存放、游戏物体的对象池,当资源过多或过大时使用工厂模式进行管理:使用工厂模式进行抽象出一个 父类定义一个接口、这里使用接口的原因是可以很快的更换方法、不会相互影响。首先是实例化工厂:(工厂需要做的事情)
首先第一个就是游戏物体工厂、另一个就是 资源工厂、这两个不是一个东西,一个是对象、一个是资源。第一个的话就是定义出来一个 接口、提供两个方法,获取和回收、然后抽象出来一个基类让它去继承这个接口,实现方法,也就是类似面向接口编程、
同样的对象路径只是写到 Prefabs/ 这一个节点,具体的由具体的类去和它进行相加,比如有一个游戏对象那么就是 str+ Game、有一个 ui,那么同样的也是 str+ Ui,后面的所有的都是这样的写法,基类工厂具体要做的事情就是取得对象以及资源、然后另外的一个就是资源工厂、依然是定义一个资源工厂的接口方法出来,使用泛型、因为泛型可以是任意类型的资源,然后让具体的子类去实现它,比如有图片资源、直接 Pictures + str(图片名) 、动画的话也是相同 Animator+str(动画的名字符串)。这样就能够有效的 进行管理分类,逻辑上条理清晰
以上即自我总结的一些资源加载的一些方法
StringManager(路径管理)
路径(string类型变量)、很容易因为一个空格或者是冒号出错。所以需要一个 路径管理者 、里面存放所有的常量 使用 const 进行修饰、使用 静态类进行存储 添加 static进行修饰,这里也是笔者很容易忘记的一个步骤!
UIManager(UI管理、使用中介者模式)
EventManager(事件管理)
管理当前所有的消息注册、接收、它的写法也有很多,前面使用到的是三个类来管理所有的事件,包含 了一个 委托、事件、字符串管理,写法上感觉都是大同小异、主要改怎么用 这个事件机制、 这里有几点总结的。当然也有踩过的一些坑,后面写在问题里边
PlayerManger(主角管理)
每一个项目中都是带有一个 主角或者说成用户,都是有一些自己要做的事情,比如游戏中,显示自己、隐藏自己、干掉自身、重新游戏、一些键盘的操作,还有就是动画等等一系列的操作,都是在这个里边做的,后面直接将一些业务逻辑直接暴露到 GameManager 中,外部直接可以通过 GameManager进行调用。其实主要就是一个存储玩家的引用,
GameController(游戏控制者)