BD行为树简笔
一、简介
-
行为树从上到下,从左到右深度遍历。序列将根据子任务确定执行序列。
-
装饰 复合 (父节点)
-
任务 有条件的(子节点)
-
三种状态Succee Filed Running 成功失败运行
二、复合节点
Sequence
有顺序的执行,直到所有的成功则显示成功.一旦子节点出现一个失败返回失败。
Selector
有选择的执行,只要有一个子节点显示成功,则这个节点返回成功。子任务中有失败并不影响。
Repeater
中继器,用于我们想要重复播放的情况。具有字段Count运行次数。 具有字段Repeater Forever(持续永久),每次运行的次数跟行为树管理者的TaskExecution有关联。如果为No Duplicates(无重复),则中继器无重复运行。如是Count,则根据行为树管理者的Update Interval(执行频率)决定在这个频率内每次执行count次。
Paraller
普通不等待并行,多个线路同时执行,只要其中一个子节点显示失败,则返回失败。最后按照Sequence的规则判定。
paraller Complete
并行结果等待完成,多个线路同时执行,等待多支子节点返回结果,结果将被统一。如果有一个失败,则返回失败,如果结果返回成功,则返回成功。最后按照Sequence的规则判定。
Parller Selector
并行结果等待选择结果,多个线路同时执行,如果有返回成功的子节点,仍等待其他节点,直到所有节点完成,最后按照Selector的规则判定本节点。
三、窗口界面
工具栏
不赘述
四、条件中止(打断)
四种条件中止,条件中止即当前节点下的子节点返回失败,此时行为树已经运行到后面,我们需要回到这个节点重新评估。
None
无打断,即不发生打断
Self
自身,即打断只发生发生在自己的子节点
LowerPriority
低优先级,即打断发生在右方的比自己优先级低的行为树。
Both
两者都有
五、测试
所有的节点有两种颜色,灰色和绿色。当前正在执行的块显示颜色为绿色,未执行的块显示为灰色。
在行为树中的inspector面板中修改,可以即时的发送到场景中去。
每个块上的禁用功能左上角的x点击,将把这个节点和它的子节点被忽略
Log文本输出,可以把所有的步骤在控制台上输出。
六、标记属性功能
[HelpUrl]
在inspector上添加蓝色url图标,点击进去对应的url。
[TaskIcon(“file[skincolor]”)]
任务图标颜色设定
[TaskCategory("/")]
自定义位置
[TaskDescription(“Description”)]
描述
[ToolTip]
提示文本
[LikedTask]
链接任务,同步任务,比如用于播放声音,任务保护任务
[InheritedField]
继承字段属性允许和任何外部行为树共享值。三个必须,必须相同类型,相同名称
,以及被继承的字段属性。当有此行为树,将可以从原始树中加载到新的树里
七、行为树与PlayerMaker集成
忽略、
八、Behavior Designer RTS Sample Project
非常重要建议观看
九、Behavior Designer CTF Sample Project
非常重要建议观看
十、Behavior Designer PlayMaker Sample Project
这个不建议了
十一、Ultimate Character Controller / Behavior Designer Integration
这个不建议了
十二、总结
看过一圈,发现做成预设体的部件确实无法获取到场景中的对象,这也就是很大一部分我之前报错的原因。所以真正在使用行为树的时候,对于场景的对象,我们应该写对应的方法去获取。另外四种节点相应的重写,任务的链接,引用树继承数值这些操作值得去学习,这是重点。另外一件事,关于动画的操作,如何去同步动画,可以不在行为树中去设置动画,而是使用第三方去同步,在行为树中,使用wait是一个很好的操作。中断是非常好的操作,也应该去掌握。我注意到有另一种打断方式,Perform Interruption,它可以获得另一个Task的引用,然后去打断,这是极好的。关于Behavior Designer官方给的一些组件,考虑做下一步的笔记。