UE5.2 SmartObject使用实践

举报
UE5技术哥 发表于 2024/03/17 22:02:05 2024/03/17
【摘要】 SmartObject是UE5新出的一项针对AI的功能,可为开发者提供如公园长椅、货摊等交互对象的统一外观封装,如UE的CitySample(黑客帝国Demo)中就运用到了SmartObject。 但SmartObject实践起来较为繁琐,主要依赖于AI及行为树,并且在UE5.3中这个模块更换了Claim接口,使其无法在纯蓝图配置中跑起来,因此本文将用一个简化的案例并配合UE5.2版本演示该模块

SmartObject是UE5新出的一项针对AI的功能,可为开发者提供如公园长椅、货摊等交互对象的统一外观封装,如UE的CitySample(黑客帝国Demo)中就运用到了SmartObject。

但SmartObject实践起来较为繁琐,主要依赖于AI及行为树,并且在UE5.3中这个模块更换了Claim接口,使其无法在纯蓝图配置中跑起来,因此本文将用一个简化的案例并配合UE5.2版本演示该模块使用。

1.SmartObject配置


(1)首先打开插件SmartObject、GameplayBehaviorSmartObjects:

q1.png

(2)右键可创建SmartObjects的定义:

q2.png

(3)添加一个Slot并设置Behavior Definitions:

q3.png

这个设置类似于给公园长椅设定座位位置,该位置可以是大概位置,因为具体逻辑可以在触发时进行处理。
Behavior Definitions的参数必须填写,目前是强绑定关系。

(4)新建空Actor蓝图,添加SmartObject组件并设置刚刚配置的资产。

q4.png


(5)将该Actor放置于场景任意位置。

q5.png


2.AI配置


接下来需要配置一个简单的AI角色,以触发SmartObject。

(1)配置好后,创建如下3个对象,其中行为树可以先不急着创建具体节点:

q6.png


(2)打开行为树,创建一个AI Task用于处理SmartObject的查找和触发:

q7.png


(3)重写节点Receive Execute AI,编写AI Task执行逻辑:

q8.png

上述逻辑通过节点Find Smart Objects查找场景中2000左右范围的SmartObjects对象,并返回为数组。

(4)继续编写Branch右侧逻辑:

q9.png

这里通过关键节点Claim预定该SmartObject的使用,防止别的使用者也查找到该SmartObject。通过Claim Handle可以拿到该Slot进行下一步处理,例如这里就将AI位置设置给了Slot。

网上教程用节点Use Claimed Gameplay Behavior Smart Object比较多,该节点可以调用AI移动至目标点,然后触发Behavior,但需要布置寻路网格比较麻烦,因此这里直接设置位置表示触发完成。

(5)最后,使用完Claim Handle后,调用Release接口,释放占用:

q10.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。