有限状态机

提供创建、使用和销毁有限状态机的功能,一些适用于有限状态机机制的游戏逻辑,使用此模块将是一个不错的选择。

常规用法

获取有限状态机组件

定义状态

有限状态机的状态均派生自 FsmState<T>,T 为有限状态机的持有者类型。

例如:为 Actor 类定义站立(IdleState)和移动(MoveState)两个状态。

创建有限状态机

如果某个持有者类型只会拥有一个有限状态机,一般不需要带有状态机名称参数。但如果同一持有者类型下会有多个有限状态机,则需要带有状态机名称参数,比如有很多持有者实例,每个实例各使用一个同类型状态机的情况。

例如:为 Actor 类创建一个名为 ActorFsm 的有限状态机,且加入站立(IdleState)和移动(MoveState)两个状态。

销毁有限状态机

获取有限状态机

检查是否存在有限状态机

切换有限状态机的状态

切换有限状态机状态只能在具体的状态中完成,不能直接由外部控制。

有限状态机相关操作

参考手册

最佳实践

有限状态机的状态考虑使用引用池

考虑将诸如 new IdleState()、new MoveState() 使用引用池技术。

常见问题

创建有限状态机时提示已存在

如果同种有限状态机有很多实例,应当给有限状态机取 name 参数且不能重名。不带 name 参数的重载,相当于 name 为空。因此,当重复创建多个实例时,等同于重名。

有限状态机不工作

有限状态机模块需要被轮询才能正常调用事件处理函数,请确认正确初始化了 Game Framework。

另外请检查有限状态机是否已调用了 Start 方法。