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


前言

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

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


1 设计图

下图省略了ISystem接口的内容。
设计图

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值