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. RubyGems系列之RubyGems初识

    转载请标明来源:https://www.cnblogs.com/zhanggui/p/9719291.html 一. 基础理解 RubyGems简称gems,它是一个用于对Ruby组件进行打包的Rub ...

  2. Codeforces #541 (Div2) - E. String Multiplication(动态规划)

    Problem   Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...

  3. 强化学习(五)—— 策略梯度及reinforce算法

    1 概述 在该系列上一篇中介绍的基于价值的深度强化学习方法有它自身的缺点,主要有以下三点: 1)基于价值的强化学习无法很好的处理连续空间的动作问题,或者时高维度的离散动作空间,因为通过价值更新策略时是 ...

  4. robotframework上的字体放大和缩小是ctr++和ctl--

  5. HTTP对静态资源的优化

    HTTP的If-Modified-Since和Modified-Since标签 在第一次请求静态资源时响应头会携带一个Modified-Since标签,里面存放的是静态资源的最后修改时间,在之后对该静 ...

  6. .NET 跨平台RPC框架DotNettyRPC

    DotNettyRPC 1.简介 DotNettyRPC是一个基于DotNetty的跨平台RPC框架,支持.NET45以及.NET Standard2.0 2.产生背景 传统.NET开发中遇到远程调用 ...

  7. linux-高并发与负载均衡-lvs-功能配置介绍

    百度百科: LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. ...

  8. Mysql基本命令及数据库存储位置

    连接数据库: sudo mysql -p+密码 例如:sudo mysql -p123456 1.显示数据库列表. show databases; 2.显示库中的数据表: use mysql: //打 ...

  9. 滴滴 CTO 架构师 业务 技术 战役 时间 赛跑 超前 设计

    滴滴打车CTO张博:生死战役,技术和时间赛跑-CSDN.NEThttps://www.csdn.net/article/2015-06-25/2825058-didi 滴滴出行首席架构师李令辉:业务的 ...

  10. centos下安装nginx并部署angular应用

    注意:直接yum安装的nginx有问题,不能直接安装,因为centos默认库里面没有nginx.如果安装过程中出现一些文件夹或者文件找不到的话,应该是你的nginx的版本没有安装对.最效率的办法是删除 ...