news 2026/6/10 16:58:26

选择监测节点-–-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/6/10 13:01:29

5-FAM,单一异构体,5-Carboxyfluorescein, 5-FAM, 单一异构体

5-FAM,单一异构体,5-Carboxyfluorescein, 5-FAM, 单一异构体中文名称: 5-羧基荧光素单一异构体(5-Carboxyfluorescein, 5-FAM, 单一异构体)反应特点及学术介绍:5-FAM(5-Carboxyfluorescein&…

作者头像 李华
网站建设 2026/6/9 9:39:33

思考与练习(第五章 基本数据类型)

一、单项选择题(本大题共 15 小题)1、Python 中,整数类型(int)表示没有小数部分的数值。关于 Python 整数的特点,以下说法正确的是:① Python 的整数有固定的最大值和最小值限制,与 …

作者头像 李华
网站建设 2026/6/9 22:22:25

如何在5分钟内构建跨平台计算机视觉应用界面?

如何在5分钟内构建跨平台计算机视觉应用界面? 【免费下载链接】gocv hybridgroup/gocv: 是一个基于 Go 语言的开源计算机视觉库,支持多种计算机视觉算法和工具。该项目提供了一个简单易用的计算机视觉库,可以方便地实现图像和视频处理算法&am…

作者头像 李华
网站建设 2026/6/10 9:12:55

DownKyi:解锁B站视频下载的终极技术方案

DownKyi:解锁B站视频下载的终极技术方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。 项…

作者头像 李华