【AI笔记】【UE5】行为树学习
【AI 笔记】UE5 行为树 (Behavior Tree) 终极手册
一、 AI 运作的核心“三大件”
在 UE5 中,让一个 AI 动起来并具备逻辑,需要三个核心组件协同工作:
- AI 控制器 (AI Controller) —— 灵魂
- 定位:附身在敌人模型(Pawn/Character)上的大脑载体。它负责驱动移动组件,并启动行为树。
- 黑板 (Blackboard) —— 记忆与感知
- 定位:AI 的“数据库”。存放着 AI 做决策需要用到的所有变量数据(例如:目标玩家的位置、当前血量、巡逻点坐标、是否处于激怒状态等)。
- 注意:行为树本身不存数据,它只做逻辑判断。所有数据读取和写入都在黑板中进行。
- 行为树 (Behavior Tree, BT) —— 逻辑与决策
- 定位:AI 的“思维导图”。它不断读取黑板里的数据,根据设定好的规则,决定下一步该执行什么动作。
二、 行为树的四大基础节点
行为树的执行逻辑是从上到下、从左到右的。树干上挂载着不同颜色的节点,它们各司其职:
1. 复合节点 (Composites) —— 控制流向的“交通灯”
负责决定分支逻辑怎么走,最常用的有三个:
| 节点名称 | 逻辑类型 | 核心机制 | 实战应用 |
|---|---|---|---|
| 选择器 (Selector) | “或者 (OR)”逻辑 | 从左到右执行子节点。只要有一个子节点执行成功,它就会向父节点汇报成功,并停止后续执行。如果失败,就试下一个。 | 优先级系统。最左边放最高优先级的事(比如逃跑/回血),中间放攻击,最右边放优先级最低的事(闲逛巡逻)。 |
| 序列 (Sequence) | “并且 (AND)”逻辑 | 从左到右执行子节点。必须所有子节点都执行成功,它才算成功。只要有一个失败,整个序列立刻中断并宣告失败。 | 步骤性动作。例如:寻找掩体 ➡️ 移动到掩体 ➡️ 转身瞄准 ➡️ 射击。中间任何一步(比如找不到掩体)失败,后续动作全部取消。 |
| 简单平行 (Simple Parallel) | “一心二用”的并行处理 | 允许 AI 同时执行两件事。包含一个**“主任务 (Main Task)”(必须是单一节点)和一个“后台树 (Background Tree)”**。当主任务完成时,该节点结束,可选择立刻掐断或等待后台树结束。 | 移动射击 / 移动举盾。例如让 Boss 一边向玩家移动(主任务),一边在后台持续播放举盾防守的动画(后台树)。 |
2. 任务节点 (Tasks) —— 具体的“手脚动作” (紫色节点)
定位:树的最末端叶子,真正执行游戏逻辑的地方。
【内置常用节点分类大全】
| 节点大类 | 节点名称 | 核心作用 | 用法细节 & 备注 |
|---|---|---|---|
| 🏃♂️ 移动与朝向类 (控制躯壳位移与视线) | Move To (移动到) | 让 AI 移动到黑板中指定的坐标 (Vector) 或物体 (Actor) 处 。 | 底层依赖 NavMesh (导航网格);建议调整 Acceptance Radius (可接受半径) 防止 AI 在终点原地抽搐 。 |
| Rotate to face BB entry (旋转以朝向黑板条目) | 让 AI 原地转身,正面朝向黑板里指定的目标 。 | 一次性动作。通常接在 Move To 到位后、Play Anim 前使用,防止怪物背对玩家空挥 。 | |
| Set / Clear Default Focus (设置/清除默认焦点) | 锁定 AI 控制器的“注意力”,让 AI 身体死死锁定在目标身上 。 | 持续性状态。调用设置后会一直生效,AI 会持续盯着目标,直到调用 Clear 清除该焦点 。 | |
| ⏱️ 时间与控制类 (控制逻辑节奏与结果) | Wait (等待/发呆) | 让 AI 强制什么都不做,原地停留设定好的时间 。 | 可以在面板中添加随机偏差时间,让行为更自然 。 |
| Wait Blackboard Time (等待黑板时间) | 读取黑板里的 Float 变量作为等待的秒数 。 | 神级节点,非常适合用来制作动态受击硬直 。 | |
| Finish With Result (以结果结束) | 强制让当前所在的分支返回 Success 或 Failure 。 | 常配合 Selector (选择器) 来控制流程,或者在早期开发时用于逻辑调试 。 | |
| 🧠 感知与策略类 (与引擎其他系统联动) | Make Noise (制造噪音) | 在当前位置发射声音事件,触发其他 AI 的听觉感知组件 。 | 实战应用:比如设置 Boss 吼叫动作时触发,用来唤醒全场小怪 。 |
| Run EQS Query (运行 EQS 查询) | 呼叫环境查询系统寻找最佳战术位置,算出坐标并写入黑板 。 | 典型的找掩体/绕背逻辑,算出坐标后通常紧接 Move To 节点跑位 。 | |
| 🗂️ 结构与嵌套类 (管理庞大的行为树) | Run Behavior (运行子行为树) | 直接在当前位置插入并运行另一棵行为树 。 | 用于保持主树整洁。比如把复杂的“攻击连招”单独做一棵树,在这里调用 。 |
| Run Behavior Dynamic (运行动态行为) | 在游戏运行期间,通过底层代码动态替换要执行的子树 。 | 高阶应用:比如 Boss 进二阶段后,从近战模式树瞬间切换为远程法师模式树 。 | |
| 🎬 通用动作类 | Play Animation (播放动画) | 让角色直接播放一个基础的动画序列 。 | 适用于无需复杂通知或判定的简单动作表现 。 |
【自定义扩展:Custom Task 蓝图实战避坑指南】
核心机制:通过蓝图创建自定义 Task(如
Task_施放重击),内部调用蒙太奇或触发 GAS 技能。致命踩坑点:逻辑可以 用
Event Receive Execute AI开始;任务末尾绝对必须连上Finish Execute(完成执行) 节点并勾选 Success!如果不加,大脑会永远卡在这个节点死机。
3. 装饰器 (Decorators) —— 节点上的“条件锁” (蓝色节点)
🛡️ 装饰器 (Decorators) 基础概念
- 定位 (核心作用):附加在复合节点或任务节点上,充当
If判断的“条件锁”。条件不满足时,下方节点将被拦截,不允许执行。 - 实战应用:在“攻击”节点上挂载黑板条件(Blackboard Based Condition):设定“距离玩家 < 3米”。满足该条件,AI 才会真正挥刀。
- 核心机制:动态监控与打断系统(行为树的“保安”)。装饰器不仅能挡住入口,还能持续在后台监视数据变化。这套系统由以下两个核心设置完美配合:
机制一:Notify Observer (通知观察者)
核心问题:什么时候敲响警报?
触发模式 推荐度 核心机制 特点与避坑指南 On Result Change (结果改变时) ⭐ 推荐 只有在条件判断的真/假结果发生翻转时(如:距离从满足 <3米 变成不满足 >3米),才触发警报。 最节省性能,逻辑最稳。是绝大多数实战情况下的首选默认配置。 On Value Change (值改变时) 🚨 慎用 只要黑板里的数值发生任何微小跳动(如:距离从 2.9米 变成 2.8米),就会强行触发警报。 极其敏感。如果配合打断机制使用,极易导致 AI 因为数值微调而被频繁打断,产生原地抽搐 Bug。
机制二:Observer Aborts (观察者中止)
核心问题:警报响了,踢飞谁?(打断谁的执行流)
打断模式 执法范围 核心机制与实战应用 None (无) 不打断 不打断任何人。即使监控的条件已经改变,也会乖乖等当前的节点动作做完再说。 Self (自身) 仅限本分支 只能打断自己所在的通道。 💡 实战应用:【目标丢失立刻停手】。一旦发现玩家隐身,立刻打断自己当前正在进行的追击动作。 Lower Priority (较低优先级) 跨分支执法 (动作游戏神技) 拥有跨分支打断权,踢飞右侧所有低优先级分支。 💡 实战应用:【残血瞬间防守】。将其放在最左侧的高优先级分支上。一旦血线跌破阈值,强行踢飞右侧正在执行的所有低优先级动作,瞬间把逻辑拉回左侧保命。 Both (两者都) 本分支 + 右分支 既能打断自己(Self),也能打断右边优先级较低的分支(Lower Priority)。 - 定位 (核心作用):附加在复合节点或任务节点上,充当
4. 服务节点 (Services) —— 后台的“雷达” (绿色节点)
- 定位:挂载在复合节点上。只要该节点及其子节点在运行,服务节点就会按设定频率(Tick)在后台循环执行。
- 实战应用:动态更新数据。例如挂载
Service_更新玩家距离,当 AI 追击时,每 0.5 秒计算一次玩家最新位置写入黑板,确保方向正确。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 橙菌!



