UE5.3 StateTree使用实践

举报
UE5技术哥 发表于 2024/03/23 21:54:37 2024/03/23
【摘要】 近期浏览UE的CitySample(黑客帝国Demo),发现有不少逻辑用到了StateTree学习一下,StateTree是多层状态机实现,以组件的形式直接挂载在蓝图中运行。 与平时常见的一些FSM库不同,StateTree并不会返回给外界当前的状态是什么,毕竟嵌套状态返回的信息并不直观,使用者可以通过UE的Tags标签来标记当前的状态或是别的方法。 下面就来简单讲讲如何使用,编辑器版本是UE

近期浏览UE的CitySample(黑客帝国Demo),发现有不少逻辑用到了StateTree学习一下,StateTree是多层状态机实现,以组件的形式直接挂载在蓝图中运行。

与平时常见的一些FSM库不同,StateTree并不会返回给外界当前的状态是什么,毕竟嵌套状态返回的信息并不直观,使用者可以通过UE的Tags标签来标记当前的状态或是别的方法。

下面就来简单讲讲如何使用,编辑器版本是UE5.3。

1.首先安装插件State Tree:

Q1.png


2.右键创建State Tree对象,创建类型选择StateTreeComponent:

Q2.jpeg


3.创建好后先不急着配置StateTree文件,先创建一个自定义任务。右键创建蓝图类,类名搜索关键字State Tree,创建类型如下:

Q3.png

注:State Tree的每一个状态上都可以挂载Task,状态进入由Condition条件控制,状态跳转由Transiton控制。

4.简单编写Task逻辑:

Q4.png


5.双击打开StateTree文件,点击Add Statet添加State1,并添加自定义Task与延迟,设置一个自身传递的Transitions过渡。

Q5.png


6.创建一个角色,用于挂载StateTree并执行状态机。

Q6.png


7.为新创建的角色蓝图添加StateTree组件,赋上之前创建的StateTree。

Q7.jpeg


8.StateTree组件会自动执行,不需要蓝图节点的调用,拖入场景执行,可见Log正常打印。

Q7.png

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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