当前位置:网站首页>【QFramework】系统层——外观模式
【QFramework】系统层——外观模式
2022-08-07 05:14:00 【抽象鸡肋】
前言
用过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
边栏推荐
猜你喜欢

dcdc低压升压直流稳压高压负电压输出12v24v转-50V100V110V150V200V250V300V350V400V500V

DGIOT IoT Open Source Platform - Tencent Cloud Lightweight Application Server Deployment

DGIOT国内首家轻量级物联网开源平台——支持多型太阳能板远程管控和多屏运维

【数据库基础】MySQL索引

四路DI四路继电器输出,RS-485/232数据采集远程I/O模块

第09天 - 二分查找

基于rt-thread studio的STM32裸机开发第一节:点亮一个LED

DGIOT数据同步

红外遥控解码

2022/5/8 SSM框架整合增删改查(模糊查询+分页)(详细案例)
随机推荐
ArrayList的扩容机制是如何实现的?
分页原理
基于rt-thread studio的STM32裸机开发——LED
「SwiftUI」Alert弹窗
组件之父子传值
DOS常用命令
基于STM32单片机智能手环脉搏心率计步器体温显示设计
加一问题
互助交流论坛系统 第四章:Redis,一站式高性能存储方案
「SwiftUI」Gradient渐变颜色填充效果
四路电机驱动
红外遥控解码
cftshow 七夕杯 web部分WP
DCDC DC low voltage step-up voltage isolation power module (with short circuit protection)
基于STC8G2K64S4单片机使用幻尔舵机控制板
无聊的冷知识4
DC升压直流高压电源模块12V24v转100V150V200V250V300V350v1000伏线性变化电压控制输出
DIN11 FHVI大功率非隔离转换器 输入信号等比例转换放大 驱动能力加强
zip压缩文件的读取和写入
mysql5.6数据迁移到mysql5.7版本遇到的时间字段问题(最详细)