GameFramework 二次封装之 Procedure 流程管理

项目 github地址

打开项目选GameLauncher场景,直接启动游戏。我用的是 Unity 2021.3.6f1 版本。但应该是2017之后的都支持,没有实测过。

参考

GameFramework框架详解之 Procedure 流程管理

老规矩,先看上面这篇文章。重构后的项目保留了框架的启动逻辑和流程。

简单总结一下实现原理

  1. 每一个 Procedure 都继承自 ProcedureBase。
  2. 每一个 Procedure 其实就是状态机的一个状态 FSMState。
  3. procedureOwner 其实就是 procedureManager,管理所有的FSMState和状态的生命周期。同时,procedureOwner 还用来作为流程的上下文,存储流程之间的共享数据。
  4. ProcedureComponent会在启动的时候创建这个状态机。

流程重构

游戏用流程的不同阶段来解耦和隔离业务功能是一种很好的模式。但原来的StartForce项目,只是简单的把流程作为串联业务的场所,混合了太多逻辑。所以这里把 StartForce 进行了重构,重构之后:

  1. 流程 ProcedureXXX 职责更单一,只负责流程的切换和流程自己的生命周期控制。
  2. 和当前业务相关的业务逻辑,UI逻辑,等都放在当前业务的目录下,让业务代码更具内聚性。
  3. 如果某些非业务功能或UI是各个流程共用的,比如某些UI界面可能在多个流程都用到,就放到 Comm/UI 目录下面。
  4. 如果某些业务是多个流程共用的,就放到Scripts/Game/Bs/XXX 目录下面,根据业务模块来做扩展。

总的来说,就是把整个游戏业务按不同的流程进行拆分(一般会对应不同的场景),也就是说尽量按照场景来组织ui和业务(这个场景有哪些ui,有哪些业务),如果遇到共用的ui和业务,就往上提。

使用

先上个截图

添加流程分三步

  1. ProcedureXXX 继承 ProcedureBase,实现对应的五个方法。 OnInit,OnEnter,OnUpdate,OnLeave,OnDestroy

  2. OnUpdate 里面做流程切换逻辑,状态切换通过ChangeState方法完成。

  3. 业务逻辑弄好之后,在图中的 Procedure 组件节点配置流程。

    框架会自动发现继承了ProcedureBase的流程,只要在新增的流程前面打钩就好了,就会加入到框架的流程管理系统。

几点说明

  1. 如果需要在流程之间传递数据,或者说有数据上的依赖,统一使用 ProcedureDataMgr 进行设置和获取,不要直接使用 procedureOwner。

  2. 在 Procedure 组件节点配置中的入口配置,"Entrance Procedure",选 ProcedureLaunch 是游戏启动流程,选 ProcedureTest 则是启动的测试流程,项目中的测试用例是用这个流程启动的。

  3. 流程的业务逻辑,不要写在 在 ProcedureXXX 里。

    ProcedureXXX 应该只处理流程相关的业务,流程的进入退出等,或者通过 ProcedureDataMgr 来获取和设置数据。

    具体流程内的业务,统一在 ProcedureXXXMgr 中去实现。

最后,借用一下PassionY的 StarForce 流程图,可以按照这个流程图来尝试调试下游戏,看看每个流程是怎么串联起来的。重构之后的代码很容易看懂,设个断点跟着跑跑,很快就能看懂(默认的是编辑器模式,只涉及到6个流程)。

相关推荐
zqx_719 小时前
随记 前端框架React的初步认识
前端·react.js·前端框架
笑非不退1 天前
前端框架对比和选择
前端框架
老章学编程i2 天前
Vue工程化开发
开发语言·前端·javascript·vue.js·前端框架
秃头女孩y2 天前
React基础-快速梳理
前端·react.js·前端框架
Small-K2 天前
前端框架中@路径别名原理和配置
前端·webpack·typescript·前端框架·vite
sophie旭2 天前
我要拿捏 react 系列二: React 架构设计
javascript·react.js·前端框架
大道归简2 天前
2.点位管理开发(续)及设计思路——帝可得后台管理系统
java·开发语言·spring boot·spring·前端框架
liangshanbo12153 天前
将 Intersection Observer 与自定义 React Hook 结合使用
前端·react.js·前端框架
陈俊杰13 天前
流行前端框架Vue.js详细学习要点
前端框架
GoppViper3 天前
uniapp设置从右上角到左下角的三种渐变颜色
前端·前端框架·uni-app·uniapp