行为树
概述
行为树((Behavior tree)是一种强大的可视化 AI 逻辑设计工具,无需编程即可通过编辑器(BTE)添加、编辑和连接任务节点,形成对象或 NPC 的行为结构。行为树不仅简化了 AI 逻辑创建,还便于在试玩模式下调试和监控节点状态。
添加行为树
有三种方式添加行为树:
信息
方法 1 和 2 需自行配置 BT,方法 3 可直接添加带预设逻辑的预制体。
-
方法 1:在场景资源浏览器点击 + 图标,选择行为树。
-
方法 2:先添加对象,在属性窗口点击添加组件,搜索行为树组件并添加。
-
方法 3:在 Packages 搜索 Behavior Tree NPC 预制体并添加。该预制体自带行为树逻辑,玩家进入视野后 NPC 会追踪玩家。
添加后:
如需编辑行为树组件,右键预制体并解包(Unpack)。
行为树编辑器(BTE)
打开 BTE
添加行为树后,点击行为树组件中的“编辑行为树”("Edit Behavior Tree")即可打开编辑器。
BTE 界面说明
- 区域 1:图形区
显示整个行为树。每个灰色矩形为节点(任务),紫色连线表示关系。可用滚动条移动画布。
- 区域 2:侧边栏
显示树和节点的设置,包括“行为”("Behavior")、“变量”("Variables")、“属性”("Properties")三标签页。
- 行为标签:定义 行为树 基本信息(名称、描述、变量、选项)。
- 变量标签:定义 行为树 变量,支持 8 种数据类型:字符串、数字、布尔、颜色 、对象、对象列表、二维向量、三维向量。
- 属性标签:显示具体任务节点的设置,不同任务有不同属性。
行为树任务类型
行为树由多种任务组成,分为四类:动作(Action)、条件(Conditional)、复合(Composite)、装饰(Decorator)。
- 动作:改变游戏状态的基本任务。如 GetPlayer 获取玩家位置,Seek 让 NPC 追踪玩家。
- 条件:判断游戏属性。如 CanSeeObject 判断玩家是否在 NPC 视野内。
- 复合:父节点,包含子任务。常见类型有:
- 顺序(Sequence):依次执行子任务,全部成功后返回成功。
- 并行(Parallel):同时执行子任务,全部成功后返回成功。
- 选择(Selector):从子任务中选择一个执行,只要其中一个成功即返回成功。上图 Sequence 节点依次获取玩家位置、判断视野、追踪玩家。
- 装饰:仅包含一个子任务,用来修改该子任务的行为。例如,可以添加一个装饰任务让 NPC 在发现敌人时中断当前任务(如采集资源),这种装饰称为中断任务(Interrupt Task)。
任务执行顺序
行为树以深度优先顺序执行任务。如下图所示,执行顺序为:Sequence、Selector A、Action A、Action B、Selector B、Action C、Action D。
监控行为树状态
- 在Play模式下,按 Alt 并点击底部
,选择行为树可查看任务状态。 - Play模式下无法编辑 BT,但可查看节点状态。节点绿色闪烁表示运行中,节点右上角绿色图标为成功,红色为失败。