用途:为 Godot 项目提供复杂 AI/角色行为的进阶状态机方案,覆盖分层有限状态机(HSM)、下推自动机(Pushdown)、并发状态机与效用成本轮询。
主要能力:提供一组脚本作为实现依据,包括 hsm_hierarchical_base.gd(向子状态转发物理与输入)、hsm_pushdown_stack.gd(可中断状态栈,如暂停/菜单)、hsm_state_context.gd(状态间持久数据上下文)、hsm_transition_guard.gd(非法转移校验)、hsm_animation_syncer.gd(逻辑到 AnimationTree 同步)、hsm_concurrent_logic.gd(并行状态机编排)、hsm_resource_state_loader.gd(用 .tres 资源数据驱动状态)、hsm_reentry_aware_state.gd(区分栈恢复与全新进入)、hsm_state_history_logger.gd(转移历史环形缓冲调试)、hsm_state_timer_component.gd(眩晕/冲刺等限时状态自动转移)。
选择方式:少量互斥状态用扁平 FSM;有嵌套子状态用 HSM;需要中断覆盖后恢复用 Pushdown;并行关注点用 Concurrent;按分数选动作可用效用成本轮询。
使用限制与规则:必须向子状态转发物理/输入;层级嵌套不超过 3 层;enter() 前须先 exit();转移帧内不得修改状态,必要时用 call_deferred;不要用字符串硬编码状态名;不要用全局单例存状态数据;push_state 必须有对应 pop_state;栈恢复时用 is_resume 标志跳过进入特效。脚本为唯一实现来源,不要复制内联示例。
适用场景:战斗受击/攻击/死亡栈、技能施放与冷却、回合阶段、对话与过场覆盖等。前置技能包括 Godot 项目基础、GDScript 与信号架构;可与组合、输入处理、CharacterBody2D、AnimationTree 等配合。官方文档链接仅在研究具体 API 时按需打开。