Composites 顾名思义是复合组件,可以理解为行为数的节点。
组件如下:
1.Sequence 顺序。Sequence任务有点像and操作。当它的子任务中有一个返回failure它就返回failure。如果一个子任务返回success它就会按顺序执行下一个任务。如果所有的子任务都返回success那么它就会返回success.
2.Parallel 平行线。它有点像Sequence,它将会执行每一个子任务直到有一个子任务返回failure。不同之处在于Parallel会同时执行所有的子任务。和Sequence一样在所有子任务都返回success后它就会返回success。如果其中一个子物体返回failure那么它会终止其他的子任务,同时返回failure.
3.Selector 选择器。Selector任务有点像or操作。当它的子任务中有一个返回success它立即返回success。如果一个子任务返回failure,它会顺序的执行下一个任务。如果所有子任务都返回failure它返回failure。
3.Parallel Selector 平行选择器。有点像Selector,当它的子任务中有一个返回success它就会返回success。不同之处在于它会同时执行所有的的子任务。如果有一个子任务返回success它就会立即返回success并终止别的子任务。如果所有的子任务返回failure它会返回failure。
4.Priority Selector 优先选择器。有点像Selector,当它的子任务中有一个返回success它就会返回success。区别在于取代从左到右的执行顺序,而是采用每个子任务的优先级来确定执行顺序,越高的优先级越优先执行。ps.在这个插件中Task基类有个 public virtual float GetPriority();在实现的Task类中重写这个方法来返回具体的优先值。
5.Random Selector 随机选择器。有点像Selector,当它的子任务中有一个返回success它就会返回success。区别在于它会以随机的顺序执行所有的子任务。Selector在树结构中按从左到右的顺序决定执行顺序。Random Selector则是把所有的子任务先洗牌,然后按照随机的顺序执行。其他的就和Selector一样了,他会连续的执行任务直到返回一个success,如果没有子任务返回success它就返回failure。
6.Random Sequence 随机顺序。有点像Sequence,当所有的子任务返回success它返回success。不同点在于RandomSequence是按照随机的顺序执行任务的。Sequence是按照从左到右的顺序来执行的。RandomSequence是先把子任务洗牌,然后按照一个随机的顺序执行。其他的就和Sequence一样了。如果有一个子任务返回failure它就会返回failure,其他的子任务会终止执行。如果所有的子任务都不返回failure它就会返回success。
7.Selector Evaluator 选择器评估员。它是一种每一帧都重新评估所有子任务的选择器任务。他会执行返回任务状态的子任务中的最低优先级的子任务。它每一帧都会执行。如果一个高优先级任务正在执行同时下一帧一个低优先级的任务要执行的话会终止这个高优先级的任务。当第一个子任务返回success它就会返回success,否则它会一直尝试比之前任务优先级更高些的子任务。它和条件中断方法很像除非他的所有子任务是条件任务。