2.0 KiB
2.0 KiB
Procedure
模块概述
Procedure 模块用于组织游戏主流程,如启动、登录、主城、战斗、结算等状态切换。它以 ProcedureBase 为模板方法基类,把生命周期拆成初始化、进入、离开、更新、销毁。
快速开始
- 挂载
ProcedureComponent - 定义多个继承
ProcedureBase的流程 - 调用
InitializeProcedure - 通过
SwitchProcedure<T>()切换
架构说明
ProcedureComponent
└─ ProcedureService
├─ IProcedure
└─ ProcedureBase
核心类与接口
IProcedureService
公开能力:
CurrentProcedureTypeInitializeProcedure(...)ClearAllProcedures()ContainsProcedure(Type procedureType)TrySwitchProcedure(Type procedureType)
ProcedureBase
生命周期模板:
OnInit()OnEnter()OnLeave()OnUpdate()OnDestroy()
API 参考
InitializeProcedure(IEnumerable<IProcedure> availableProcedures, Type defaultProcedureType)
- 必填参数:
availableProcedures - 必填参数:
defaultProcedureType - 返回值:无
TrySwitchProcedure(Type procedureType)
- 必填参数:
procedureType - 返回值:
bool
CurrentProcedureType
- 返回值:
Type
完整使用示例
using System;
using AlicizaX;
public sealed class BootProcedure : ProcedureBase
{
protected override void OnEnter()
{
SwitchProcedure<LoginProcedure>();
}
}
public sealed class LoginProcedure : ProcedureBase
{
protected override void OnEnter()
{
Log.Info("Enter LoginProcedure");
}
}
public sealed class ProcedureExample
{
public void Initialize()
{
GameApp.Procedure.InitializeProcedure(
new IProcedure[] { new BootProcedure(), new LoginProcedure() },
typeof(BootProcedure));
}
}
最佳实践
- 一个流程只负责一个清晰状态
- 初始化逻辑放
OnInit,进入/退出逻辑放OnEnter/OnLeave
常见错误
- 未初始化就切换流程
- 把长时间并行任务塞入流程本身