【QFramework】系统层——外观模式

文章目录

  • 前言
  • 1 设计图
  • 2 个人理解
  • 3 总结


前言

用过QFramework框架的同学都知道其系统层不同于通常视频里挂载在游戏对象的Manger,没有不继承MonoBehavior,仅用于存储一定状态和共享上层逻辑。

那么要使用Unity的update系列API就需要创建游戏对象(GameObject)挂在脚本,然后通过事件把需要执行的代码注册进去,实现的方法很多,今天我分享的是其中一种我认为比较好的方法——门面(外观)模式。


1 设计图

下图省略了ISystem接口的内容。
【QFramework】系统层——外观模式_第1张图片

2 个人理解

有句段子“没有什么问题是加一层不能解决的。”,而门面模式就是添加了一层层级,隔离了复杂系统与客户端,这一层接口是稳定的。

我在QFramework框架里,创建了GameManagerSystem类作为用户与系统的接口,每次进入某个场景,只需调用该接口即可启动相应的系统。

当然随着项目的不断深入,场景也会不断增加,因此我这里实现的有限状态机应该改为策略模式抽象工厂去实现。

GameManagerSystem,在切换状态后,会把创建的系统类存入一个列表,然后GameManagerSystem本身拥有一个游戏对象,该对象的所有update系列(按需编写)会遍历列表,执行IGameSystem接口对应的方法。

例如FixedUpdate:

private void FixedUpdate()
{
    for (int i = 0; i < SystemList.Count; i++)
    {
        SystemList[i].FixedUpdate();
    }
}

3 总结

不知道大家实际使用的时候,会不会看见ISystem就无脑注册到IOC容器里,拿着锤子看什么都是钉子,我一开始也是这样的,到后来才醒悟,其实是可以按需创建,需要的时候用。

参考代码:TowerDefense2D

你可能感兴趣的:(Over,Design,Unity开发,外观模式,unity,游戏引擎)