Unity3D行为树插件BehaviorDesigner(二-B
Behavior Designer 是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化编辑器。Behavior Designer 提供了强大的 API 可以让你轻松的创建 tasks(任务),配合 uScript 和 PlayMaker 这样的插件,可以不费吹灰之力就能够创建出强大的AI 系统,而无需写一行代码,本文将介绍所有 Behavior Designer 的功能特性。如果你还不了解什么是行为树(behavior trees)请查看“行为树的概述”。依赖于 Behavior Designer插件, 你完全可以不用关心什么是行为树(behavior trees)但是,如果你了解一些行为树的知识,这将有助于你使用 Behavior Designer,包括一些常用组件, 例如:tasks(任务),action(行为),composite(复合) ,conditional(条件),decorator(修饰符),当你第一次打开 Behavior Designer,会出现下面的窗口:
这里一共分为四大部分:
下图中的第一个部分是主要操作区,用来创建你的行为树。
第二部分是面板属性区,这里可以编辑一个行为树的特定属性,添加新任务,创建新的变量,或者编辑 tasks(任务)的参数。
第三部分是工具栏,你可以添加/删除行为树,锁定当前行为树,查看所有行为树, 等等。
第四部分是调试工具栏。你可以启动/停止,逐步调试,暂停,查看错误。
第一部分是主要的设计工作的区域,在这个区域,你可以创建新的Task(任务)和设计这些 Task(任务)的行为树。第一步要做的就是创建一个行为树 (behavior tree) ,通过右键选择“Add Behavior Tree”可以创建新的 behavior tree 行为树,或者通过上方的工具栏 Lock(锁定)旁边的加号添加一个新的行为。 一旦行为树创建完毕,你就可以开始添加 tasks(任务)了。添加一个 task 可以通过右键点击空白区,或者左侧 2 区中的 Tasks 标签来创建。一旦你的 task 创建完毕,你将看到类似于下面图中的效果:
这里的 Entry task 是默认添加的,作为根节点进行 添加后续的Task,这里能看到添加的 Sequence(序列)节点有错误,这是因为这个 Sequence 必须有后续子节点,只要添加了子节点,这个错误就会消失,现在我们已经有了第一个 Task,接下来让我们多添加几个:
你可以创建 Sequence(序列)节点,或者 selector(选择器)节点,他们都是 task(任务)。通过多个这种节点的组合,你可以创建很深的层次结构。 如果在创建过程中你不小心搞错了什么,那么选择有错误的节点,delete 删除掉即可。 Behavior Designer 的执行顺序是从左到右的顺序执行,并且是深度优先。上图中的执行顺序如下:SequenceA,SelectorA,SequenceB,ActionA,ActionB,ActionC,SelectorB,ActionD ,ActionE
现在我们已经有了一个基础的行为树,让我们改改参数看看,选择 ActionC 节点然后查看左侧的属性面板,选到 Inspector 视图,你可以再这里重命名 这个 Task(任务)名称,设置参数,或者输入一个注释在(Comment ).
在左侧的界面中有出了 Inspector 还有其他三个标签(Behavior,Tasks,Variables)Variables 面板允许你创建共享变量,并改变变量值。关于这个面板的具体信息,在后面章节介绍。Tasks 面板列出了所有可用的 tasks(任务)这里的 tasks 和你在空白区右键弹出的菜单中的 tasks 是一样的,这个列表可以通过上方的搜索框输入,快速定位到你想要创建的 tasks 任务,包括 action(行为),composite(复合),conditional(条件),decorator(修饰符)。最后一个面板,behavior 面板,显示的是当前行为树 Behavior Tree 组件的属性,这个属性也会出现在所捆绑的 Gameobject 的属性面板上!各个面板具体介绍请看后续章节介绍。
最后的是工具栏,工具栏提供了例如添加/删除等基础的行为树操作的工具,
上图中 1 号位置的箭头是用来预览不同行为树,如果在同一个 Gameobject 上添加了多个行为树的话,2 号位置用来显示所有行为树,并可以选择某个行为树,3 号位置是当前场景中拥有行为树的 Gameobject,可以展开下拉菜 单并查看和选择,4 号位置也是用来选择当前 Gameobject上的不同行为树,如果有多个的话,5 号是删除当前行为树,6 号增加一个行为树,7 号锁定 当前行为树试图,不过因为在场景中点击其他资源导致行为树设计面板中的内容切换,8 号是保存当前行为树, 9 号是导出当前行为树作为一个 Scriptable 资源以便其他行为树调用。