news 2026/8/13 20:15:20

选择监测节点-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
选择监测节点-–-behaviac

原文

选择监测节点(SelectorMonitor)和监测分支节点(WithPrecondition)作为对传统行为树的扩展,可以很自然的处理事件和状态的改变,类似于程序语言中的“switch…case”语句,如下图所示:

  • 选择监测和监测分支节点只能配对使用,即选择监测节点只能添加监测分支节点作为它的子节点,监测分支节点也只能作为选择监测节点的子节点被添加。
  • 监测分支节点有条件分支子树和动作分支子树。只有条件分支子树返回成功的时候,动作分支子树才能够被执行。
  • 选择监测节点是一个动态的选择节点,与选择节点(Selector)相同的是,它选择第一个返回成功的子节点,但不同的是,它不是只选择一次,而是每次执行时都对其子节点重新评估后再进行选择。

默认情况下,上一次得到执行的动作分支,如果在下一次其条件分支也返回成功,那么这个动作分支会继续执行上次返回正在运行的节点。例如,假设上图中上一次执行行为树的时候,ID为13的条件节点返回成功,并且已经执行到ID为9的动作节点(这时ID为4的动作节点已返回成功,而ID为9的动作节点返回正在运行)。那么,当下一次执行该选择检测节点时,如果发现ID为13的条件节点还是返回成功,ID为9的动作节点就会直接得到执行,而不是先执行ID为4的动作节点。

但有的时候,可能需要在条件分支再次得到满足时,其动作分支需要重新执行,而不是默认情况下的从上次返回正在执行的节点继续执行。例如,对于上面的例子,当ID为13的条件节点再次返回成功时,需要重新执行其动作分支,即重新开始执行ID为4的动作节点。这时候,需要勾选上选择检测节点的属性“重置子节点”,如下图所示:

勾选该属性后,选择检测节点每次执行时,都会从头开始执行其动作分支。

选择检测节点的实现很像并行节点,每帧都要重新执行所有的子树,大量使用的时候请注意其性能。

具体的执行逻辑可以查看behaviortree/nodes/composites/selectorloop.cpp

另外,执行行为树的过程中,当状态、条件发生变化或发生事件(Event)时如何响应或打断当前的执行是个重要的问题。

目前behaviac组件支持三种方式来处理状态变化或事件发生:并行节点、选择监测节点、事件附件等。简而言之,并行和选择监测节点的工作方式是采用“轮询”的方式,每次执行时需要重新评估所有子节点,而不是像其他节点会保留上一次正在执行的子节点以便在下一次执行时继续执行。事件附件是在游戏逻辑(程序端)发出事件时,才按需得到响应。

请详看文档《事件处理》。

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

或节点-–-behaviac

原文 或(Or)节点接受两个以上的条件子节点,执行逻辑”或( )”操作,如下图所示: 图1 或节点 只要有一个条件子节点的返回值为成功,或节点则返回成功。所有条件子节点都返回为失败&…

作者头像 李华
网站建设 2026/8/14 8:40:15

状态机-–-behaviac

原文 简介 behaviac组件不仅支持行为树,也支持有限状态机(FSM),并且支持行为树跟状态机的相互嵌套调用。 behaviac组件中的状态机主要用到了状态(State)、等待状态(WaitState)和等…

作者头像 李华
网站建设 2026/8/14 13:02:10

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/8/14 20:00:17

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

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

作者头像 李华
网站建设 2026/8/11 15:39:05

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

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

作者头像 李华