ue3d虚幻UE5引擎使用StateTree进行状态管理

虚幻UE5引擎使用StateTree进行状态管理

分类:
ue3d - 虚幻UE5引擎使用StateTree进行状态管理

StateTree 是一个状态机,用于管理虚幻UE5引擎中添加的状态,它可用于 AI 和游戏状态管理,与行为树类似,具有树结构层次结构的状态管理是可能的。

启用StateTree插件

1.在虚幻引擎插件管理面板下启用 StateTree 插件,启用 GameplayStateTreeStateTree 插件并重新启动。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

2.然后从内容浏览器创建一个 StateTree 资产(Artificial Intelligence → StateTree)

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

3.将 StateTree 组件添加到任何参与者。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

4.将详细信息面板中的 StateTree 资产分配给 StateTree 组件。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

5.如果勾选 StateTree 组件的 Start Logic Automatically,StateTree 会在运行时自动启动。

StateTree编辑器屏幕

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

数据交换方法

StateTree 具有引用输入条件和转移条件中的属性的功能。

  1. Schema/Context 通过显式指定要添加的 actor 的类,可以指定为 StateTree 输入条件和转移条件指定的类的属性。
  2. Parameters 如果想管理 StateTree 内部的参数,可以在这里指定,它还可以从 StateTree 组件详细信息设置默认值。
  3. Evaluators 由于不能直接从 StateTree 组件向 StateTree 端传递参数,因此使用 Evaluators 可以使用 StateTree 中除了上下文和 StateTree 的参数以外的数据。它可以通过从 UStateTreeEvaluatorBlueprintBase 类创建蓝图来使用。

Evaluators 具有以下功能:

ue3d - 虚幻UE5引擎使用StateTree进行状态管理
  • 每当 StateTree 开始执行时,它就会被处理。
  • 属性可用于输入条件和转换条件。

状态详细信息

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

状态进入条件(EnterCondition)

设置确定是否可以选择状态的条件,可以设置的主要参数。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理
  • 反转判断结果(Invert)
  • 比较方法(Operator)
  • 左侧值(Left)单击 Bind 列表框选择并引用 StateTree 数据交换方法中设置的对象或属性。
  • 可以使用右侧值(Right)固定值,但也可以像左侧值一样从 Bind 中选择要引用的对象属性。

自定义输入条件

除了默认输入条件外,还可以添加自定义输入条件。

可以通过从 UStateTreeConditionBlueprintBase 类创建蓝图来添加您自己的输入条件。

任务

  1. 状态变为活动时执行的操作的集合。
  2. 处理一直持续到任务完成。
  3. 当任务完成时,将调用 End 事件并确定状态转换。
  4. 如果没有满足条件的转移,则进入下一个状态。

创建任务

可以从 UStateTreeTaskBlueprintBase 创建蓝图,各个流程的实现,重写以下函数,添加任务的开始、结束、各帧流程。

  • EnterState(在任务开始时)
  • Tick(每帧执行任务)

返回节点的值维持并完成任务的执行。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理
  • ExitState(任务结束)
  • StateCompleted(任务完成)

使参数可编辑

如果选中 Instance Editable 属性,则可以从 StateTree 编辑器屏幕进行设置。

设置转场

设置从当前状态到另一个状态的转换条件转换目标

Trigger

指定执行转换的条件类型。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理
  • 任务完成(OnStateCompleted)
  • 成功完成任务(OnStateSucceeded)
  • 任务终止失败(OnStateFailed)
  • 执行直到满足转换条件(OnTick)
  • 外部事件调用(OnEvent)

通过选择此触发器,可以使用 StateTree 组件的 SendStateTreeEvent 函数将状态从外部蓝图更改为 StateTree。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

过渡问题

指定满足转换/触发条件时或任务完成后要转换到的状态,可以主要将转移目标指定为以下状态。

  • 转移到另一个状态(GOTO STATE)可以指定直接转移到另一个状态的目标。
    • 这是与 StateTree 树的区别,因为行为树只有在条件满足时才会执行。
  • 转移到同一层级以下的状态(Next State)
  • 如果没有满足不转移到另一个状态(Block Transition)的条件的转移,它将转移到下一个状态。
    • 如果要继续执行任务处理,请指定此项。

状况

可以用与状态输入条件相同的方式指定转移条件,还可以使用任务属性作为条件参数。

ue3d - 虚幻UE5引擎使用StateTree进行状态管理

本文总结

StateTree 和 BehaviorTree 是不同的东西,所以用 BehaviorTree 创建的 AI 不能原样移植,但如果熟悉实现状态机,StateTree 会更容易使用。

就个人而言,这是一个易于使用的功能,不仅适用于 AI,而且适用于游戏状态管理。

以上是3D天堂关于在虚幻引擎中使用 StateTree 进行状态管理的全部内容,如果你有任何反馈,请随时在本页面下方留言。

学习内容此资源下载价格为6学分(服务免费),请先
游戏可视化3D天堂,提供一个学习观摩的环境,材料仅用于个人和教育目的,您始终可以通过原始地址购买来支持开发人员。

相关信息

  • 类型:知识
  • 字数:1078
  • 字符:3447
  • 适用软件:Unreal Engine
  • 说明:无
  • 编号:153457

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!