虚幻行为树引擎
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/unreal-behavior-trees-79rr。
技能介绍
要解决什么问题
UE 里写 NPC 决策逻辑,最常见的坑是把状态全塞进一个 Tick 函数:行为互相覆盖、调试时不知道当前执行了哪条分支、加了新状态后老逻辑错乱。这个技能要解决的问题是:用引擎官方推荐的 Behavior Tree + Blackboard 架构,把 NPC 决策组织成可中断、可调试、可扩展的树——何时攻击、追击还是巡逻,目标消失后如何退出战斗,视野检测多久刷新一次,都有明确归属。
核心能力与关键步骤
技能把一棵可用的行为树拆成七个环节:
- 建立 BB/BT 配对:
Blackboard存类型化 Key(如TargetActor、LastKnownLocation、bIsInvestigating),Behavior Tree引用同一块黑板——黑板就是 AI 的记忆。 - AIController 驱动:
AAIController拥有 Pawn 后调用RunBehaviorTree,同时初始化黑板。 - 组合节点定结构:
Selector是优先级兜底(攻击→追击→巡逻),Sequence是顺序执行(移动到掩体→换弹→探头),Simple Parallel让主任务与次要任务并行。 - Decorator 做条件闸门:读取黑板 Key 决定分支能否进入;Observer Aborts 设为
Both后,目标出现立即打断巡逻进入战斗,目标清空也能即时退出。 - Service 保持黑板新鲜:挂在分支上的服务只在分支激活时周期 Tick,比如持续做视野检测并更新
TargetActor。 - Task 干活并返回状态:任务节点返回
Succeeded/Failed/InProgress,MoveTo这类 latent 任务稍后才完成。 - PIE 中验证:行为树调试器高亮当前执行节点,实时显示黑板值。
适用边界与注意点
- 面向 UE 5.4+ 的 BT/BB 资产体系;纯导航寻路交给引擎 NavMesh,
MoveTo只是调用它。 - 一次性简单逻辑用小型状态机可能更便宜,不必套整棵树。
- 常见坑:AI 不启动源于缺
Auto Possess AI或没调用RunBehaviorTree;MoveTo秒失败多因关卡缺Nav Mesh Bounds Volume;黑板 Key 名拼错时SetValueAsObject静默失败;latent 任务忘了FinishLatentTask会卡死整棵树;Selector与Sequence语义写反会颠倒行为。 - 写 C++ 自定义
UBTTaskNode可参考references/custom-bttask.md。
使用场景
- UE 5.4 项目新手搭建 NPC 攻击/追击/巡逻的优先级行为树,需要按 Selector 与 Decorator 组织分支
- 战斗策划调整 Observer Aborts,让战斗分支在目标出现时打断巡逻并在目标消失后退出
- 玩法程序员编写自定义 C++ UBTTaskNode,参考 references/custom-bttask.md 实现 latent 任务的 FinishLatentTask
- 关卡测试时在 PIE 中用行为树调试器定位 AI 不启动的问题,检查 Auto Possess AI 与 RunBehaviorTree 调用
适合人员
- 虚幻引擎新手,诉求是学习 BT/BB/AIController 的标准接入流程
- 游戏 AI 程序员,诉求是用 Decorator 与 Service 控制分支优先级和黑板刷新时机
- 战斗策划,诉求是理解 Selector 与 Sequence 的语义差异,避免分支逻辑写反
- 关卡测试人员,诉求是用 PIE 行为树调试器排查 MoveTo 失败或分支不响应的关卡问题