UE的AI行为树Selector和Sequence如何理解
在 Unreal Engine 的行为树(Behavior Tree)中,Sequence 和 Selector 都属于“复合节点”(Composite Nodes),它们负责控制子节点的执行流程。可以把它们类比成程序里的“逻辑运算符”:
1. Sequence(序列节点)
-
执行逻辑:从左到右依次执行它的每个子节点,
-
如果某个子节点返回 Failure(失败),整个 Sequence 就立即返回 Failure,不再执行后续子节点。
-
只有当所有子节点都返回 Success(成功)时,Sequence 才返回 Success。
-
-
用途:用来描述“并且”关系的行为流程——只有前面的动作都成功了,才继续下一个动作。
-
示例:
-
检查玩家是否在视野内(检测节点)
-
向玩家移动(移动节点)
-
执行攻击(攻击节点)
如果第 1 步检测失败(玩家不在视野内),Sequence 立即失败,AI 不会执行移动和攻击。
-
2. Selector(选择节点)
-
执行逻辑:同样从左到右依次执行它的每个子节点,
-
如果某个子节点返回 Success,整个 Selector 就立即返回 Success,不再执行后续子节点。
-
只有当所有子节点都返回 Failure 时,Selector 才返回 Failure。
-
-
用途:用来描述“或者”关系的行为分支——只要有一个动作成功,就当整体成功。
-
示例:
-
如果血量低(检测节点),则执行“寻找回血点”
-
否则如果看到敌人(检测节点),则执行“攻击敌人”
-
否则执行“巡逻”
— 当第 1 步检测到血量低,Selector 返回成功,AI 直接去回血,不会再判断看到敌人的分支。
-
-
Sequence:只要遇到失败就“短路”(short-circuit)返回失败。
-
Selector:只要遇到成功就“短路”返回成功。
3. 使用建议
-
Sequence 常用在“完成一系列步骤”场景,比如:开门 → 进入房间 → 拾取物品。
-
Selector 常用在“多种策略可选”场景,比如:如果能攻击就攻击,否则就去巡逻;如果看见敌人就追踪,否则就隐藏。
掌握了这两者,就能灵活地搭建出复杂的 AI 行为逻辑:用 Sequence 组合必须按顺序完成的动作,用 Selector 划分不同的行为分支。这样既清晰又易于维护。