news 2026/7/7 18:48:49

状态机-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
状态机-–-behaviac

原文

简介

behaviac组件不仅支持行为树,也支持有限状态机(FSM),并且支持行为树跟状态机的相互嵌套调用。

behaviac组件中的状态机主要用到了状态(State)、等待状态(WaitState)和等待帧数状态(WaitFramesState)三种节点,以及条件转换(Transition)和总是转换(AlwaysTransition)两种附件,如下图所示:

图1 状态机相关节点和附件

状态节点

状态节点(State)是状态机中的基本组成部分之一,可以在状态节点上添加前置、后置以及转换等附件,如下图所示:

图2 状态节点

  • 在状态节点上添加的前置:表明进入该状态节点时,需要执行的操作。
  • 在状态节点上添加的后置:表明退出该状态节点时,需要执行的操作。
  • 在状态节点上添加的转换:表明满足该转换所表示的条件时,由当前状态切换到转换所指向的下一个状态。

如下图所示,可以编辑状态节点的相关属性:

图3 状态节点的属性

  • 名字:为状态节点指定一个有意义的名字,以便区分其他状态节点。
  • 方法:表示该状态节点需要执行的操作。
  • 结束状态:如果勾选,表示该状态作为结束状态,即在执行完该状态节点之后,整个状态机也直接结束。该节点形状也将显示为圆角矩形(RoundRectangle),以示区别。

具体的执行逻辑可以查看fsm/fsmstate.cpp

等待状态节点

等待状态节点(WaitState)是一种特殊的状态节点,可以在状态节点上添加前置、后置以及等待转换等附件,如下图所示:

图4 等待状态节点

添加等待状态节点时,会自动的生成唯一的等待转换附件,不接受添加其他类型的转换附件。

如下图所示,可以编辑等待状态节点的相关属性:

图5 等待状态节点的属性

相比状态节点的属性,等待状态节点少了“方法”属性,但多出了一个“持续时间”属性,用来指定需要等待多长时间,可以是常数、属性或方法的返回值。

具体的执行逻辑可以查看fsm/waitstate.cpp

等待帧数状态节点

等待帧数状态节点(WaitFramesState)也是一种特殊的状态节点,可以在状态节点上添加前置、后置以及等待转换等附件,如下图所示:

图6 等待帧数状态节点

添加等待帧数状态节点时,会自动的生成唯一的等待转换附件,不接受添加其他类型的转换附件。

如下图所示,可以编辑等待帧数状态节点的相关属性:

图7 等待帧数状态节点的属性

相比状态节点的属性,等待帧数状态节点少了“方法”属性,但多出了一个“帧数”属性,用来指定需要等待多少帧数,可以是常数、属性或方法的返回值。

具体的执行逻辑可以查看fsm/waitframesstate.cpp

条件转换附件

转换附件(Transition)是状态机中的基本组成部分之一,它表示一个条件,当这个条件满足时,由所在的状态切换到另一个状态,如下图所示:

图8 转换附件

如下图所示,类似条件节点来编辑转换附件的相关属性:

图9 转换附件的属性

此外,在上图中有个“效果”的属性,是转换附件执行完之后需要执行的额外操作。

具体的执行逻辑可以查看fsm/startcondition.cpp

状态转换附件

状态转换附件(StatusTransition)是一种特殊的转换附件,根据它的配置,转换时机会有不同:

  1. 总跳转,表示无条件从所在的状态切换到另一个状态,如下图所示
  2. 成功时,表示当所在节点是子树并且成功的时候转换
  3. 失败时,表示当所在节点是子树并且失败的时候转换
  4. 结束时,表示当所在节点是子树并且结束(成功或失败)的时候转换

图10 状态转换附件

具体的执行逻辑可以查看fsm/alwaystransition.cpp

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 13:14:16

AI训练能效革命:从45分钟到3分钟的技术演进与行业影响

AI训练能效革命:从45分钟到3分钟的技术演进与行业影响 【免费下载链接】modded-nanogpt GPT-2 (124M) quality in 5B tokens 项目地址: https://gitcode.com/GitHub_Trending/mo/modded-nanogpt 在AI算力成本持续攀升的背景下,AI能效优化已成为行…

作者头像 李华
网站建设 2026/7/7 3:08:13

金运环球:2025年11月非农数据深度解析报告

一、非农摘要——总数据分析美国11月非农就业数据呈现“冰火两重天”格局,就业反弹与失业率隐忧并存,劳动力市场在政府关门扰动下韧性犹存但降温迹象明显。就业增长超预期反弹:11月非农就业人口增加6.4万人,高于市场预期5万人左右…

作者头像 李华
网站建设 2026/7/7 3:29:42

微服务架构设计 - 分布式锁使用方法论

深度解析:分布式锁实战方法论——以车贷系统为例 在构建高并发、高可用的分布式车贷系统时,数据的一致性是我们面临的最大挑战之一。从用户发起贷款申请、风控审核、到最终的放款扣额,每一个环节都可能因为并发操作而导致数据错乱。 虽然 JVM 内部提供了从偏向锁到重量级锁…

作者头像 李华
网站建设 2026/7/7 18:14:29

WordPress完全教程:从零基础到高手的终极学习指南

WordPress完全教程:从零基础到高手的终极学习指南 【免费下载链接】WordPress中文完全教程pdf下载 《WordPress中文完全教程》是一本全面而深入的电子书,适合从初学者到高级开发者的所有读者。从基础的安装与配置,到高级的主题定制与插件应用…

作者头像 李华
网站建设 2026/7/7 10:40:30

OBS多平台推流插件完整教程:一键实现多平台同步直播

OBS多平台推流插件完整教程:一键实现多平台同步直播 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp obs-multi-rtmp作为OBS Studio的专业级多平台推流插件,让创作…

作者头像 李华