1. 什么是Procedure(流程)
流程是贯穿游戏运行时整个生命周期的有限状态机。
通过流程,将不同的游戏状态进行解耦将是一个非常好的习惯。
例如:
- 对于网络游戏
 你可能需要如检查资源流程、更新资源流程、检查服务器列表流程、选择服务器流程、登录服务器流程、创建角色流程等流程
- 对于单机游戏
 你可能需要在游戏选择菜单流程和游戏实际玩法流程之间做切换。
如果想增加流程,只要派生自 ProcedureBase 类并实现自己的流程类即可使用。
2. 流程的生命周期

游戏启动后会自动进入 默认流程 ProcedureLaunch 需要自己编写自定义流程并跳转

3. 使用流程的流程
- 新建脚本,脚本中的类需要派生自 ProcedureBase 类。
 代码如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 
 | using GameFramework.Procedure;using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
 
 namespace Game
 {
 public class ProcedureMain : ProcedureBase
 {
 
 protected override void OnInit(ProcedureOwner procedureOwner)
 {
 base.OnInit(procedureOwner);
 }
 
 
 protected override void OnEnter(ProcedureOwner procedureOwner)
 {
 base.OnEnter(procedureOwner);
 }
 
 
 protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
 {
 base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
 }
 
 
 protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
 {
 base.OnLeave(procedureOwner, isShutdown);
 }
 
 
 protected override void OnDestroy(ProcedureOwner procedureOwner)
 {
 base.OnDestroy(procedureOwner);
 }
 }
 }
 
 | 
- 通过编译后,GameFramework->Procedure 的 Inspector 中会出现这个新增加的流程,勾选上这个流程,使之成为可用流程之一
  
 - 
- Entrance  Procedure(入口流程)
 即为游戏开始的脚本。
 其余勾选的即为游戏里用得到的流程。
 其实流程没什么神秘的,他就像个状态机,游戏里的任一时刻只有一个状态
 比如你打开背包,就离开当前的大厅,进入背包流程,当你点击返回大厅按钮,就离开背包流程,进入大厅流程。切换场景也是如此。
 
 
- 使用 ChangeState 方法在主流程或其他流程上切入该流程
 - ChangeState<ProcedureMain>(procedureOwner); // 切换流程到 ProcedureMain