UE4 行为树资料
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
- None 不中止执行。
- Self 中止 self,以及在此节点下运行的所有子树
- Lower Priority 中止此节点右方的所有节点
- 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相关程序
相关网址
UE4 行为树资料的更多相关文章
- UE4行为树
这是 UE4中行为树编辑器 中可用的默认节点.取决于开发项目的不同(如射击游戏),可能会有更多节点.这里介绍五种行为树节点类型: 节点类型 描述 Composite(流程控制节点) 这种节点定义一 ...
- [UE4]行为树,组合节点:Selector和Sequence
行为树节点 一.Composite组合节点: 1.Selector 要求比较低:只要有一个子节点成功就可以了. 只要子节点有一个返回true,则停止执行其它子节点,并且Selector返回true.如 ...
- UE4.7的IOS发布和调试的相关问题
UE4.7以后正式源码免费了,正好最近工作也在做这部分,ue4的官方文档虽然有一部分ios平台的资料,那也只是通过编辑器来发布或预览一类,但手游程序员都知道,一些cpu和gpu性能上的调试是在所难免的 ...
- CART分类与回归树与GBDT(Gradient Boost Decision Tree)
一.CART分类与回归树 资料转载: http://dataunion.org/5771.html Classification And Regression Tree(CART)是决策 ...
- 字典树Trie--实现敏感词过滤
序言 Trie树 资料 https://blog.csdn.net/m0_37907797/article/details/103272967?utm_source=apphttps://blog.c ...
- [POJ2104]K-th Number
K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 34048 Accepted: 10810 Ca ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- 转载 ACM训练计划
leetcode代码 利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode. ...
随机推荐
- MacOS 10.13.6 下装xcode 流程
1.最好先安装brew https://github.com/Homebrew/brew/releases 自动安装脚本 /usr/bin/ruby -e "$(curl -fsSL htt ...
- php之微信公众号发送模板消息参观模仿
上篇文章中鞋到了公众号发送末班消息,他是最后调用两个方法,本文章简化一下 将下面的php方法放到一个可以引入的公共类中即可 构建模板消息: 我把需要用到的模板消息 都写成一个个方法,放在公共类文件中了 ...
- leetcode 54. Spiral Matrix 、59. Spiral Matrix II
54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0).(1,1 ...
- P1177 【模板】快速排序 题解
本质为sort,这里我们用优先队列(堆)解决. 什么是堆? 堆 堆是一个完全二叉树,而且是每层都有规律的二叉树 规律大概是: 小根堆:最上层数的大小最小,往下每层结点都比父亲结点大,比两个儿子结点小 ...
- Elasticsearch 通关教程(七): Elasticsearch 的性能优化
硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch. ...
- [原创]一种专门用于前后端分离的web服务器(JerryServer)
如果你还不了解现在的前后端分离,推荐阅读淘宝前端团队的前后端分离的思考与实践 1.问题 随着现在整个软件开发行业的发展,在开发模式上逐渐由以前的一个人完成服务端和前端web页面,演变为前端和后端逐渐分 ...
- MySQL操作(备份很重要)
文档一: --修改用户密码的命令 mysqladmin -uroot -proot123 password mysql123 --登录mysql数据库的命令 mysql -uroot -proot12 ...
- (七)jdk8学习心得之join方法
七.join方法 1. 作用:将list或者数组按照连接符进行连接,返回一个字符串. 2. 使用方法 1) String.join(“连接符”,数组对象或者list对象) 2) 首先转换成stream ...
- Linux下Nginx配置阿里云 SSL证书实现HTTPS访问
这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...
- Java内存溢出和内存泄露后怎么解决
1.首先这里先说一下内存溢出和内存泄露的区别: 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但 ...