StateTree 的核心模型
一句话概括 StateTree:层级状态机,每个状态里可以跑一棵小行为树。它把状态机的"阶段清晰"和行为树的"表达力"拼在了一起。
四个核心概念
| 概念 | 作用 | 类比 |
|---|---|---|
| State(状态) | AI 当前处于的阶段(巡逻 / 战斗 / 撤退) | 状态机的状态 |
| Transition(转换) | 状态之间的跳转条件 | 状态机的边 |
| Event(事件) | 触发转换或状态内行为(如"感知到敌人""受到伤害") | 事件驱动 |
| Task(任务) | 状态内的具体行为 | 小行为树 |
与行为树的对比
| 维度 | 行为树 | StateTree |
|---|---|---|
| "我在哪个阶段" | 隐含(靠当前激活节点推断) | 显式(当前 State 就是答案) |
| 阶段切换 | 靠装饰器与中断,间接 | Transition,直接 |
| 状态内复杂行为 | 强 | 同样强(内嵌行为树 / Task 列表) |
| 学习曲线 | 低 | 中 |
| 编辑器可视化 | 树形 | 状态图 + 树形混合 |
什么时候 StateTree 明显更划算
- 阶段鲜明的 AI:Boss 战的多阶段(血量高时阶段 A、血量低进入狂暴阶段 B)——用行为树表达就是一堆"血量装饰器",用 StateTree 就两个状态 + 一条转换;
- 需要跨阶段共享情报:StateTree 的参数在状态间自然传递;
- 与技能系统结合:技能施加"眩晕"效果 → 广播事件 → 转换到眩晕状态,非常自然。
StateTree 的运行规则速记
- 同一时刻只有一个"当前状态"(层级结构下每层一个);
- 进入状态时执行进入任务,离开时执行退出任务;
- Transition 的条件满足时跳转(可设优先级);
- 事件(Event)可以立刻触发 Transition,也可以排队在状态内处理。
详细的执行语义(选择器 / 评估频率 / 值类型)见官方的 状态树选择器概览。
