news 2026/4/15 10:55:09

并行节点-–-behaviac

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
并行节点-–-behaviac

原文

并行(Parallel)节点在一般意义上是并行的执行其子节点,即“一边做A,一边做B”,如下图所示:

在选择或序列节点中,是顺序的一个接一个的执行其子节点,上一个子节点执行结束后,根据其状态是否执行接下来的子节点。而并行节点在逻辑上是“同时”并行的执行所有子节点(但实际也是从上往下依次执行),然后根据所有子节点的状态决定本身的状态。

注意:并行节点每帧都有可能执行所有的子树,大量使用的时候请注意其性能。

如何根据所有子节点的返回状态,来决定并行节点本身的状态呢?并行节点有几个重要属性可以配置,如下图所示:

  • 失败条件:决定并行节点在什么条件下是失败的
  • 成功条件:决定并行节点在什么条件下是成功的
  • 子节点结束继续条件:子节点结束后是重新再循环执行,还是结束后不再执行
  • 退出行为:当并行节点的成功或失败条件满足并返回成功或失败后,是否需要终止掉其他还在运行的子节点
  • 当子节点执行状态既不满足失败条件,也不满足成功条件,且无Running状态子节点时,并行节点将直接返回Failure

在序列节点中,假设其子节点包括了条件节点和其他节点。那么,条件节点实际上是作为其他节点的前提条件,只有条件节点返回Success,下面的其他节点才会得到执行。

并行节点可以用来实现所谓的“上下文相关的前提条件”(context precondition),如下图所示:

并行节点配置条件节点和其他节点,并且失败条件是缺省的配置FAIL_ON_ONE,那么只有当条件节点成功的时候其他节点才被执行,从而条件节点事实上是其他节点的前提条件。

注意:作为前提条件的这种用法是不严谨的,当条件失败的时候,在并行节点返回失败之前,后续的其他节点会多执行一次。所以,请使用“前置”附件来实现这种前置条件的需求。

与序列节点+条件节点方式的不同之处在于,序列节点实现的前提条件只是“进入”其他节点的前提条件,一旦首次进入并开始执行其他节点后,就不再检查该前提条件了。而并行节点实现的前提条件是上下文相关的,不但首次进入并开始执行前需要检查,之后每次执行也都要检查。

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

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

Calibre-Douban插件:电子书元数据管理的终极解决方案

还在为电子书信息不全而烦恼吗?Calibre-Douban插件为你提供了一站式的电子书元数据管理体验。这款基于网络爬虫技术的Calibre插件,能够从豆瓣图书网站智能抓取完整的书籍信息,让你的电子书库瞬间变得井井有条。📚 【免费下载链接】…

作者头像 李华
网站建设 2026/4/8 18:33:38

VisionReward-Image-bf16:革新视觉生成模型的人类偏好对齐框架

VisionReward-Image-bf16:革新视觉生成模型的人类偏好对齐框架 【免费下载链接】VisionReward-Image-bf16 项目地址: https://ai.gitcode.com/zai-org/VisionReward-Image-bf16 引言:重新定义视觉生成的质量评估标准 在人工智能视觉生成领域&am…

作者头像 李华
网站建设 2026/4/13 12:06:59

40、桌面监控项目:天气数据监测与分析系统详解

桌面监控项目:天气数据监测与分析系统详解 1. 项目概述 桌面监控项目主要用于实时获取天气数据、展示数据图表以及进行未来天气预测。该项目包含两个主要类: DataRetriever.java 和 Mainframe.java 。 DataRetriever.java 负责从 Cloudant 数据库中获取数据,而 Mai…

作者头像 李华
网站建设 2026/4/12 14:06:18

16、系统管理:系统维护实用脚本解析

系统管理:系统维护实用脚本解析 在系统管理和维护工作中,脚本起着至关重要的作用。本文将详细介绍几个实用的系统维护脚本,包括 killall 、 verifycron 和 docron 脚本,深入探讨它们的工作原理、运行方式、使用结果以及可能的改进方向。 killall 脚本 工作原理 …

作者头像 李华