兵营模式  UML 类图

这里的脚本和Unity里的物体都是分离出来的。数据也是分离的。

开始场景由GameLoop 进入  ,由SceneStateController 控制场景的切换这里用的是状态控制模式, 进入主菜单场景MainGame,点击开始,再进入战斗场景,战斗场景会去通知 GameFacade进行兵营系统,角色系统,兵营UI ,游戏状态UI,关卡系统,能量系统。游戏时间系统的 初始化工作。 这个GameFacade充当一个中介。使用了中介者模式了外观者模式 来进行通知调用。

抽象类IGameSystem 里面有Init , Update, Release三个方法。它的子类有 角色系统,兵营系统,成就系统,能量系统,游戏事件系统,关卡系统。6个子类;

下面是命令模式的UML类图

这里 的兵营系统用的是命令模式

点击 训练士兵 就会去ICamp里添加命令。执行训练命令, 去通知角色工厂去生产士兵。这里使用了工厂模式, 角色工厂可以生产敌人 和士兵,资源工厂来用 加载资源。

武器工厂生产各种武器,属性工厂 用来 加工属性。

角色系统 由抽象角色类和抽象武器类,和抽象角色属性类, 属性类有一个对抽象策略属性类的应用, 因为不同角色的成长属性计算方式不一样  。因此用 策略模式 来包装。方便 计算 ,调用,松耦合

 

士兵工厂 和敌人工厂 都是用建造者模式 来生产的

 

士兵和敌人 都用了FSM状态模式,FSMSystem来控制他们的行为状态.AI  ,IEnemyStata里有两种状态 追 和攻击,士兵的状态有3种,追 发呆 攻击。

游戏事件系统GameEventSystem  是用观察者模式实现的。 有个抽象游戏事件主题,它有3个具体主题,杀敌人主题,新关卡主题,和杀士兵主题,和一个抽象游戏事件观察者分别有新光卡观察者   杀敌人光关卡 观察者,杀死敌人成就观察者,杀死士兵成就观察者;

在杀死敌人后,会通知UI更新,这里还用了访问者模式,去访问角色系统, 一共存活了多少个士兵 和杀了多少个敌人。在第一关的敌人都死了之后,关卡观察者就会去 通知关卡系统进行 下一关;

 

最后  能量系统  也是继承 抽象游戏系统 IGameSystem; 有 TakeEnergy(int value)   Recycle(int energy) 方法,通过GameFacade 中介  来给其他类调用

 

 

 

 

所有的UI系统 都有个基类 IBaseUI,有 初始化 函数和 根UI  5个虚方法  Init  Release Update Show Hide;

 

 

有四个子类,兵营信息,游戏暂停,游戏状态,士兵信息。

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

跳至工具栏