一.组合节点打断功能
1.参数AbortType介绍
(1.None 无其他作用
(2.Lower Priority 打断右边
组合节点,完成执行后,在未返回到组合节点的父节点中(即执行到右边分支的过程中),会循环执行到的条件子节点(只有第一层的条件子节点会循环),当条件结果变化时,正在执行的任务会终止,并重新评估执行组合节点
(3.Self 打断子节点
组合节点,执行中,在未返回退出组合节点中(即在组合节点执行过程中),会循环执行到的条件子节点,当条件结果变化时,正在执行的任务会终止,并重新评估执行组合节点
(4.Both (打断右边和子节点)
类似Self和Lower Priority,不同的是:循环执行条件的范围同时包含了两者.
2.多重组合打断的嵌套
组合节点的子组合节点有打断时,子组合节点下应该循环的条件节点继续循环
3.条件执行节点
ConditionalEvaluator装饰节点也可以打断,功能类似Both,不同的是,它有控制循环的参数reevaluate true:执行时循环判定条件,不满足时终止子节点,false:不循环.
4.并行节点与并行选择节点
这两者的关系好比顺序节点和选择节点,
共同点:同时处理多个分支
不同点:并行节点是当一个分支返回失败时,打断终止其它分支并返回失败;
并行选择节点是当一个分支返回成功时,打断终止其它分支并返回成功;
5.PerformInterruption与Interrupt
PerformInterruption与Interrupt,也可以打断,两者组合控制可以完成在不同分支上的打断
二.节点优先级.
任务节点的优先级由重载public virtual float GetPriority();方法实现
三.行为树与脚本之间的数据同步
使用VariableSynchronizer脚本来同步行为树与行为树,行为树与脚本之间的数据
四.自定义节点时相关标签的用法
1.[RequiredField] 强制要求选择参数
2.[TaskDescription("??")] 定义节点描述,在编辑器中选择到节点时在下方提示出
3.[TaskCategory("??/??")] 定义节点在编辑器工具栏中的查找路径
4.[Tooltip("??")] 定义对节点参数的描述
五.相关BUG
1.BehaviorTreeReference节点,关闭了,实际运行时还是会引用到行为树,并执行子树.
2.尽量减少SharedGameObjectList的定义,有时会引起数据异常,解决的方式也很神奇,尝试将变量在类中定义的顺序作调整,可以解决.
欢迎大家加群(475453656)交流