高级状态机(Advanced State Machines)是一项面向复杂 AI 与角色行为的技能蓝图,核心是分层有限状态机(HSM)与下推自动机(pushdown automata)。
用途方面,资料指出:分层状态、状态栈与上下文传递共同定义了复杂行为的管理方式。该技能适合需要管理多层状态、并支持中断与恢复行为的场景,例如暂停菜单和过场动画。
主要能力与脚本方面,资料列出两个可用脚本:hsm_logic_state.gd 是带状态栈管理与校验的 HSM 基类;pushdown_automaton.gd 是基于栈的状态机,用于中断—恢复行为。资料还强调,在实现分层 AI 行为之前,必须先阅读 hsm_logic_state.gd。
使用方式方面,资料提供了分层状态类(HierarchicalState)与状态基类(State)的示例代码。分层状态类包含当前状态 current_state、状态栈 state_stack,以及 transition_to、push_state、pop_state 等方法;状态基类定义了 enter、exit、update、physics_update、handle_input 等生命周期方法。
使用限制与注意事项方面,资料列出了一系列强制规则:切换状态时必须先调用 exit() 再调用 enter(),否则会跳过前一状态的清理,导致计时器、补间等资源泄漏;使用 push_state() 必须配套 pop_state(),否则会造成栈溢出与内存泄漏;不得在状态切换过程中修改状态,避免在 exit() 中调用 transition_to() 造成重入切换的未定义行为,应标记切换并在当前流程完成后再执行;切换前必须校验目标状态存在,避免静默失败或崩溃;分层状态若有子状态,父状态的 update() 必须调用当前子状态的 update() 以完成委托;代码中不要使用字符串状态名,应改用常量或枚举,以防拼写错误导致静默失败。
最佳实践方面,资料建议:一个状态一个文件(分离)、用信号通信状态变化、用 push/pop 处理中断。相关资料还关联 characterbody-2d 与 animation-player。除上述内容外,资料未提供更多关于收费、价格、平台或具体实现步骤的信息。