环境:Unity2017.4 语言:C#
总起:
行为树,我很早就了解到了这个插件,不过对于它究竟是什么其实概念上比较模糊,这次正好趁机我们一起来学习一下(跟渲染一样AI也是个大坑)。
本次教程基于插件内部的pdf文档,加上自己的理解,如果有不对的地方恳请大佬们指出。
行为树应该是最为流行、成熟的一套AI解决方案了,虽然现在出现了更加强大的技术(决策树),不过这仍是主流的方案之一,各大小游戏都在使用它。
首先什么是行为树?
行为树是用来解决构建复杂AI的一套解决方案,相比于状态机(FSM)更加灵活、更加强大、更加易于使用:
1.行为树以节点为基本单位,可以任意组合节点来达成自己想要的效果;
2.FSM在状态数量多的情况下,会有大量的节点连接,造成相当的复杂性;
3.该插件拥有一个图形编辑器,树形结构更加利于理解。
Behavior Designer该插件拥有四个包体,分别为:Behavior Trees for Everyone(本体)、Formations Pack、Movement Pack、Tactical Pack。
除了本体以外,其他都是扩展包,扩展包包含很多与Unity底层或其他插件对接的具体节点。但是是这样子的,基本来说扩展包是没法满足你的需求的(每个项目所需要的细节是不一样的),扩展包提供的内容很多地方还是得重写,这只能说是一个非常好的学习资料,而不能说是万能的扩展包。
所以建议是只购买本体,扩展包可以看看学习,然后根据策划的具体需求,自己构建节点。
面板介绍:
插件导入之后,行为树的编辑面板可以通过菜单栏的Tools -> Behavior Designer -> Editor打开,打开之后如上图分为四个区域。
第1个面板是树形结构的主要编辑区域。首先选中一个节点,然后右键后选择Add Behavior Tree即可创建一个行为树。
第2个面板主要用于参数的调整,拥有四个页签:
- Behavior,整棵行为树基本属性;
- Tasks,可以给第1个面板中添加的所有节点;
- Variables,选中第1个面板中的节点后可以调整单独节点的参数;
- Inspector,同上,一些基本属性如名称、注释、打断方式。
第3个面板是操作的工具栏:
- 选择下一个或上一个行为树;
- 列出当前场景和工程中所有的行为树;
- 列出当前场景中所有的行为树;
- 当前选中GameObject上的所有行为树;
- 当行为树的外部行为树;
- 移除当前行为树;
- 增加一个行为树;
- 锁住当前面板,选择其他物体后不会自动变更行为树;
- 将当前行为树导出为一个外部行为树;
- 根据条件筛选节点;
- 给当前行为树进行截图(我直接卡死了……);
- 显示行为树插件的配置。
第4个面板是debug工具,可以开始/停止、单步调试、暂停,还可以看到当前行为树在运行前报错的数量。
关于操作:
- 添加节点,有两种方式:在Tasks页签中选择节点、右键选Add Task;
- 连接节点,按住节点两头的小方块直接拖拽即可;
- 删除节点和连接线,选中节点或连接,按下delete键即可。
今天就介绍这么,下一章会以一个简单的示例来介绍行为树的机制。