1.Sequence(序列)节点
这个节点是一个“和”的关系,也就是它下面的子节点的执行顺序是一个接着一个的,如果其中一个返回 false,那么后续的子节点不会被执行,这个序列节点返回 false。只有当所有子节点全部完成并返回 success 的时候,这个 Sequence(序列)节点才会返回 success。
2.Selector(选择)节点
这个节点是“或”的关系,也就是他下面的子节点的执行顺序是一个或另一个的,只有所有子节点返回 false 才会返回 false。只要有一个子节点返回 success,那么这个 Selector 节点就会返回 success,后续的节点不会被执行。
3.Parallel(并行)节点
这个节点类似于 Sequence(序列)节点。不同的是,Parallel(并行)节点会在同一时间执行所有子节点而不是一个一个的去执行, 如果子节点中有任意一个返回 false,则停掉所有子节点并返回 false。只有所有子节点全部返回 success 的时候,才会返回 success。
4.Parallel Selector(并行选择)节点
类似于 Selector(选择)节点,Priority Selector(并行选择) 节点只要有一个子节点返回 success,那么它就会返回 success。不同点在于,子节点的执行顺序不是从左到右的,而是通过优先级来确定的执行顺序,较高的优先级的子节点会被先执行。
5.Random Selector(随机选择)节点
这个节点的特点是:随机的执行子节点,只要有一个子节点返回成功,它就会返回成功,不再执行后续节点。如果所有子节点都 返回 false 则它也返回 false。 在这个节点的属性面板中有:seed(随机种子)的设置,自行使用。
6.Random Sequence(随机序列)节点
类似于 Sequence(序列)节点,只是他的执行顺序是随机的,只要遇到一个子节点返回 false,RandomSequence(随机序列)就 返回错误,直到全部子节点都返回 success,它才会返回 success。 在这个节点的属性面板中有:seed(随机种子)的设置,自行使用。
7.Selector Evaluator(重复判断选择)节点
这个节点每帧都会去重新评估子节点的执行状态并选择。它会执行子节点中优先级最低的子节点,每帧都会这么干。如果当前一个高优先级的节点在运行并且下一帧要执行的子节点优先级比较低,那么它会打断高优先级的节点,去执行优先级低的子节点。 Selector Evaluator(重复判断选择)节点 会从低到高的去遍历执行所有子节点,直到遇到一个返回 success 的。如果所有子节点都返回 false,那么它就返回 false,否则只 要有一个返回 success,它就会返回 success。这个节点模拟了条件打断功能,如果子节点没有条件节点的话。
8.Conditionals(条件判断)节点
条件节点的任务是判断游戏的一些属性,比如玩家是否活着,怪物是否在视野距离内。
9.Random Probability (随机概率)节点
通过设置 successProbability 属性来控制返回 success 的几率(默认 0.5,也就是 50%几率),另外还有seed 随机种子的设置等。
10.Compare Field Value(字段比较)节点
比较指定的值的字段值。 返回成功如果值是相同的。
11.Has Received Event(是否接收到事件)
12.Decorators(修饰器)节点
这种节点的功能是用来包装另一个节点(只能有一个子节点)。Decorators(修饰节点)将改变节点的行为,例如:修饰节点可以 再运行时控制子节点直到返回某个特定状态(success 或者是 false)。后者是对子节点返回结果取反(即:success 返回 false,false, 返回 success); 下面来介绍 BehaviorDesigner 默认自带的几个 Decorator(装饰器节点)
13.Conditional Evaluator (条件节点的评估) 装饰节点
参数设置:
1:reevaluate :条件节点是否需要每帧都重新评估一次
2:conditionalTask:要被评估的条件节点,注意:这个节点本身就是个条件节点。 对设置的条件节点进行评估,如果条件节点返回 success,那么运行子节点并返回子节点的运行结果,如果条件节点没有返回 success 那么子节点不会被运行,并且立刻返回 failure。条件节点只会在开始运行的时候被评估一次。
13.Interrupt(打断)装饰
如果打断节点被触发,则打断下面的所有子节点任务的执行。打断命令可以被 Perform interruption(执行打断)节点发起,打断 节点在收到打断命令前,不会打断他下面的子节点的执行状态!如果子节点执行完毕还没有收到打断命令,则直接返回子节点的 执行结果。例如下图这样:
14.Inverter(取反)装饰节点
子节点的任务完成后返回值,在这个节点会被取反并传递到上一级中。
15.Repeater(重复/循环)装饰节点
有三个属性设置:执行次数,是否一直重复,运行直到返回错误。
16.Return Failure (返回失败)装饰节点
只要子节点当前的状态不是 running,也就是子节点执行结果无论是 success 还是 failure,都返回 failure。如果子节点状态是 running 的话则返回 running。
17.Return Success(返回正确)装饰节点
只要子节点当前的状态不是 running,也就是子节点执行结果无论是 success 还是 failure,都返回 success。如果子节点状态是 running 的话则返回 running。
18.Task Guard(任务守卫)装饰节点
类似于多线程互斥操作中使用的 Lock 标记,为了避免公共数据被多次引用,下图以外部行为树为例进行演示,这里使用并行触发 两个外部行为树,如果不加上 TaskGuard,那么两边都会去并行执行外部行为树,现在加上 TaskGuard 后同一时间只能执行一个, 而另一个要等待执行完毕才能执行。
上图 TaskGard 配置如下图:
19.Until Failure(直到失败)装饰节点
直到子节点返回 failure,否则一直循环执行子节点, 如下图:
20.Until Success(直到成功)装饰节点
直到子节点返回 success,否则一直循环执行子节点。