Composites

Select 选择

从左往右执行其子节点,直到一个达成,则 Select 达成并返回上层,否则失败并返回上层

Sequence 队列

从左往右执行其子节点,直到一个失败,则 Sequence 失败并返回上层,否则达成并返回上层

Simple Parallel 模拟并行

包含一个main task和一个sub tree, main task支持一个 Task 节点,用于执行一个主线行为,sub tree 支持一个行为树,伴随 main task 执行,返回结果是main task的执行结果

Task

Task 节点用于执行具体的动作,引擎内置的 Task 常用的有 Wait 、 Move To 、 Is At Location 等等,Task 一般是自行实现的AI具体的行为逻辑,其中的代码与普通蓝图代码一样
Task官方节点文档

Task 中的常用事件

  • Event Receive Execute / Event Receive Execute AI
    定义该 Task 的主体逻辑代码,如果没有特殊需求,则必须以 Finish Execute 节点结束,因为只有 Finish Execute 节点才能向上层返回执行结果,否则该 Task 如果不被打断将不会执行完成

    如果同时存在 Event Receive Execute 和 Event Receive Execute AI 两个事件,优先执行 Event Receive Execute AI 事件

  • Event Receive Abort / Event Receive Abort AI
    当前任务被打断时触发该事件,用来处理突发情况对当前行为的影响,如果没有特殊需求,则必须以 Finish Abort 节点结束,以结束该任务节点的执行

    如果同时存在 Event Receive Abort 和 Event Receive Abort AI 两个事件,优先执行 Event Receive Abort AI 事件

Decorator 装饰器

Decorator 类型的节点用作条件判断(类似于程序中的基本流程控制),附着于 Composites 或 Task 节点上
官方节点文档

Observer Aborts

  1. None 不中止执行。
  2. Self 中止 self,以及在此节点下运行的所有子树
  3. Lower Priority 中止此节点右方的所有节点
  4. Both 终止 self、此节点下运行的所有子树、以及此节点右方的所有节点

Services

Services 附着在 Composite 节点上,只要其分支节点被执行,它们便将按所定义的频率执行。它们常用于检查和更新黑板。它们以行为树系统的形态取代了传统平行节点
可在行为树图表编辑界面添加自定义的Service,在Service中添加若干Blackboard Key Selector类型的引用变量暴露出来并编译,然后将Service附着在Composites或者Task节点上,在节点上点击已附着的Service,在其属性栏中为其中的变量指认黑板上的键,然后在Service中编写逻辑代码对已指认的变量进行更新

Service中的常用事件

  • Event Receive Search Start / Event Receive Search AI
    在任务搜索进入树的分支时被调用。比如有一个父节点A,其下面有两个子节点B和C,当任务搜索进入A时调用A的Service中的Search Start,如果A完成或者被打断,当任务搜索进入B时,将再次调用A的Service中的Search Start

    如果同时存在 Event Receive Search Start 和 Event Receive Search Start AI 两个事件,优先执行 Event Receive Search Start AI 事件

  • Event Receive Activation / Event Receive Activation AI
    在某节点从非活动子树的一部分变为活动子树的一部分时触发

    如果同时存在 Event Receive Activation 和 Event Receive Activation AI 两个事件,优先执行 Event Receive Activation AI 事件

  • Event Receive Deactivation / Event Receive Deactivation AI
    在某节点从活动子树的一部分变为非活动子树的一部分时触发,如果附着于Task上,节点离开不会触发,附着于Composites上可以触发。

    如果同时存在 Event Receive Deactivation 和 Event Receive Deactivation AI 两个事件,优先执行 Event Receive Deactivation AI 事件

  • Event Receive Tick / Event Receive Tick AI
    当Service所在的节点是活动子树的一部分时,Tick事件将以指定的频率调用,Tick的触发时间间隔由所在Service的Interval和Random Deviation属性共同决定,Interval指定基础时间间隔,Random Deviation指定在基础时间间隔上的随机误差

    如果同时存在 Event Receive Tick 和 Event Receive Tick AI 两个事件,优先执行 Event Receive Tick AI 事件

总结

Composites类似于分支,Decorator类似于分支的判断,Task类似于Actor的动作,Services控制变量的值。
行为树操作黑板,Pawn操作黑板,动画蓝图操作黑板,抽像出了一层
使用行为树可使行为逻辑 直观,复用,可扩展,好维护。

原代码

例:BTTask_MoveTo----文档上查不到属性,因属性不是Public
UBTTaskNode ---->Task相关程序

相关网址

行为树历史
EQS与行为树
操作

UE4 行为树资料的更多相关文章

  1. UE4行为树

    这是 UE4中行为树编辑器 中可用的默认节点.取决于开发项目的不同(如射击游戏),可能会有更多节点.这里介绍五种行为树节点类型:   节点类型 描述 Composite(流程控制节点) 这种节点定义一 ...

  2. [UE4]行为树,组合节点:Selector和Sequence

    行为树节点 一.Composite组合节点: 1.Selector 要求比较低:只要有一个子节点成功就可以了. 只要子节点有一个返回true,则停止执行其它子节点,并且Selector返回true.如 ...

  3. UE4.7的IOS发布和调试的相关问题

    UE4.7以后正式源码免费了,正好最近工作也在做这部分,ue4的官方文档虽然有一部分ios平台的资料,那也只是通过编辑器来发布或预览一类,但手游程序员都知道,一些cpu和gpu性能上的调试是在所难免的 ...

  4. CART分类与回归树与GBDT(Gradient Boost Decision Tree)

    一.CART分类与回归树 资料转载: http://dataunion.org/5771.html        Classification And Regression Tree(CART)是决策 ...

  5. 字典树Trie--实现敏感词过滤

    序言 Trie树 资料 https://blog.csdn.net/m0_37907797/article/details/103272967?utm_source=apphttps://blog.c ...

  6. [POJ2104]K-th Number

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 34048   Accepted: 10810 Ca ...

  7. (转)POJ题目分类

    初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推. ...

  8. poj分类

    初期: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治法.      ( ...

  9. 转载 ACM训练计划

    leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...

随机推荐

  1. eclipse导入maven项目,但无法编译的问题

    同事今天从git 导入项目到eclipse 后,发现项目所依赖的包找不到依赖,初步判定是maven的依赖没有导入项目中. 最终发现,在项目中的.classpath 文件加入以下代码即可解决问题. &l ...

  2. 【Shell基础】循环:for、while、until

    1.for循环 ..};do echo "for loop" done 2.while循环 be_s= en_s= while [ "$be_s" -le &q ...

  3. host头注入

    看到有说这个题为出题而出题,其实我还是这么觉得, host出问题的话我觉得一般只有在审计代码,看到才知道有host注入 假设不提示host注入,就有难度了 常规的注入了

  4. 基于nodejs的流水线式的CRUD服务。依赖注入可以支持插件。

    写代码好多年了,发现大家的思路都是写代码.写代码.写代码,还弄了个称号——码农. 我是挺无语的,我的思路是——不写代码.不写代码.不写代码! 无聊的代码为啥要重复写呢?甚至一写写好几年. 举个例子吧, ...

  5. mySQL查看运行的进程

    查看运行的进程 show processlist kill id 杀掉进程

  6. [Alpha阶段]测试报告

    [Alpha]阶段测试报告 在测试过程中发现的BUG ​ 在最后的测试阶段中,我们不可避免的遇到了各种各样的BUG.虽然大多数都不是严重的BUG,但是这些细枝末节的问题的堆积,依然会很大程度上降低用户 ...

  7. Linux下Nginx配置阿里云 SSL证书实现HTTPS访问

    这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...

  8. 通过VuePress管理项目文档(一)

    VuePress 相关链接 完整的Vue组件代码以及完整的文档,仅适用于个人参考学习: 文档预览地址:预览链接 使用VuePress编辑文档的代码访问:组件文档 完整代码:组件代码 Vue组件开发 这 ...

  9. GIt帮助文档之忽略某些文件——忽略python虚拟环境文件夹(转)

    前言:为避免多个Python项目下安装库之间的冲突,或为轻松打包某个项目,建议在每个项目文件夹下安装Python虚拟环境,并在虚拟环境内进行操作,之后你安装的任何库和执行的任何程序都是在这个环境下运行 ...

  10. 如何获得select被选中option的value和text

    如何获得select被选中option的value和text 一:JavaScript原生的方法 1:拿到select对象: var myselect=document.getElementById( ...