所有类和接口
类
说明
行为节点抽象
(并非所有行为节点都需要继承该类)
主动选择节点
每次运行时都会重新测试节点的运行条件,选择一个新的可运行节点。
每一帧都检查子节点的前置条件,如果前置条件失败,则取消child执行并返回失败
在子节点完成之后固定返回失败
在子节点完成之后仍返回运行。
在子节点完成之后固定返回成功
分支任务(可能有多个子节点)
取消令牌。
状态切换参数
建议用户通过原型对象的
ChangeStateArgs.withExtraInfo(Object)等方法创建条件节点
(并非所有条件节点都需要继承该类)
可返回详细错误码的条件节点
装饰任务(最多只有一个子节点)
展开的switch
在编辑器中,children根据坐标排序,容易变动;这里将其展开为字段,从而方便配置。
迭代所有的子节点最后返回成功
反转装饰器,它用于反转子节点的执行结果。
Join
1.在得出结果之前不会重复执行已完成的任务。
默认的AnyOf,不特殊处理取消
相当于并发编程中的anyOf
Main策略,当第一个任务完成时就完成。
Join的完成策略
1.不要在Policy上缓存Join的child。
Sequence
相当于并发编程中的WhenAll/AllOf等待所有任务完成后返回成功
相当于并发编程中的WaitAll
叶子任务(不能有子节点)
循环节点抽象
如果
LoopDecorator.execute()方法是有循环体的,那么一定要注意:
只有循环的尾部运行child才是安全的,如果在运行child后还读写其它数据,可能导致bug(小心递归)。只执行一次。
并行节点基类
定义该类主要说明一些注意事项,包括:
1.在处理子节点完成事件的时候,避免运行execute方法,否则可能导致其它task单帧内运行多次。
重复N次
多选Selector。
服务并发节点
其中第一个任务为主要任务,其余任务为后台服务。
简单并发节点。
简单随机任务
在正式的项目中,Random应当从实体上获取。
非并行分支节点抽象
如果
SingleRunningChildBranch.execute()方法是有循环体的,那么一定要注意:
只有循环的尾部运行child才是安全的,如果在运行child后还读写其它数据,可能导致bug(小心递归)。状态机节点
1.redo和undo是很有用的特性,因此我们在顶层给予支持,但默认的队列不会保存状态。
行为树的Task的状态
1.
子树引用
取消
任务入口(可联想程序的Main)
用于处理Entry的完成事件
行为树加载器
1.虽命名为TreeLoader,但可加载任意导出对象,只因该Loader最初是为行为树设计的。
循环子节点直到给定的条件达成
重复运行子节点,直到该任务失败
(超类做了死循环避免)
等待N帧