行为树学习

一、行为树状态

状态有三种:成功,失败,执行中

二、行为树特性

composites:组合

Sequence:从左向右按顺序执行任务,当所有任务执行成功之后,sequence才返回成功,当所有子任务执行中时,sequence的状态为running(执行中),当其中有一个任务执行失败,后面的子任务不会执行,sequence返回失败。

Selector:从左向右按顺序执行任务,当其中有一个任务执行成功,selector返回成功,后面的任务不会执行,当所有任务都执行失败,才会返回失败。

Parallel:并发执行它的所有Child Node。而向Parent Node返回的值和Parallel Node所采取的具体策略相关:
    Parallel Selector Node: 一False则返回False,全True才返回True。
    Parallel Sequence Node: 一True则返回True,全False才返回False。
    Parallel Hybird Node: 指定数量的Child Node返回True或False后才决定结果。

    Parallel Node提供了并发,提高性能。
    不需要像Selector/Sequence那样预判哪个Child Node应摆前,哪个应摆后,
    常见情况是:
    (1)用于并行多棵Action子树。
    (2)在Parallel Node下挂一棵子树,并挂上多个Condition Node,
       以提供实时性和性能。
    (3)Parallel Node增加性能和方便性的同时,也增加实现和维护复杂度。

Paraller Selector:异步执行,一旦某个节点执行时返回成功则会终止其他节点的执行而返回成功。 
Priority Selector:与Selector类似,但是根据优先级执行。 
Random Selector:随机||。 
Random Sequence:随机&&。 

Selector Evaluator:将会每帧都计算最低优先级的子节点进行执行。

Decorators :装饰
Conditional Evaluator:判断所设置的条件,如果条件返回成功则执行它的子节点,不成功则返回失败。 
Interrupt:和Perform Interruption配合使用,可以终止Interrupt的所有子节点的运行。 
Inverter:将子节点的返回值取反。 
Repeater:重复子节点的运行。 
Return Failure:不论子节点的返回值而返回失败。 
Return Success:不论子节点的返回值而返回成功。 
Task Guard:设置子节点多久能被访问。 
Until Failure:重复执行子节点直到返回失败。 

Until Success:重复执行子节点直到返回成功。

actions:行为

最终行为的执行者,不可接子节点,行为节点是完成具体的一次(或一个step)的行为,视需求返回值,相关自定义代码可以写到这里。例如:

idle:让任务处于running状态

wait:等待一段时间继续执行,等待的过程返回running,继续执行时返回成功

moment:有关移动的行为

conditions:条件

最终条件判断,不可接子节点,它仅当满足Condition节点的条件时返回True。例如:

值比较:满足条件,返回成功

三、行为树属性

AbortType:

Self:是否可以中断自身的循环运行,只能中断同级(拥有相同的父节点(装饰节点)的Action节点。

Lower:是否可以中断比自己优先级低的任务的循环运行(从左向右,优先级降低),当一个高优先级装饰节点A下的Condiontal子节点发生变化时,他只能中断一个低优先级的Action节点(跟A节点同级,但在A节点右侧的Action节点)。

Both:都进行中断,子节点Action既中断与自己父类同级的子节点Action(self),又中断与自己同级的子节点Action(lower)。

Variable:

局部变量:本行为树使用的变量

全局变量:全部行为树可以共同使用的变量

share类型:可以选择变量中设置好的值,变量中的值可以进行代码动态修改,可以取到,取/设置 值时加Value

你可能感兴趣的:(Unity)