本文档描述的是3.6及以后版本,对于3.5及以前的老版本请参考分类“3.5”。
如《教程1:Hello Behaviac》所述,程序端的类型代码可以通过编辑器自动生成基本原型,然后在生成的代码模板上继续添加自己的逻辑代码。
本教程将详细介绍相关的具体操作步骤,包括:从创建Agent类型到生成其代码文件,并利用该Agent类型创建行为树,最后执行该行为树的流程。
1. 新建Agent类型
通过编辑器的菜单项“视图”->“类型信息”(或快捷键Ctrl+M),打开类型信息浏览器,如下图所示:
点击右上角的“新增”按钮,弹出“新增类型”窗口,添加FirstAgent类,勾选“生成代码”选项,如下图所示:
更详细的类型信息编辑过程以及相关操作面板的参数说明,请参考文章《编辑类型信息》。
2. 新增成员属性
为FirstAgent类添加int类型的成员属性p1,如下图所示:
3. 新增成员方法
再为FirstAgent类添加成员方法m1,如下图所示:
添加完FirstAgent类型及其成员属性和方法之后,可以在类型信息浏览器中看到如下所示:
4. 修改成员
如果修改了成员属性和方法,例如改名、加参数等操作后,只需点击右下方的“应用”按钮即可。
例如,将成员属性p1改名为p2,如下图所示:
5. 生成代码
点击右下方的“应用”按钮,在工作区配置的“代码生成位置”生成了类型及其相关的“胶水”代码文件,如下图所示:
在上图中的internal文件夹中生成了Agent类型及其“胶水”代码,如下图所示:
需要将types文件夹中的所有代码文件都加到自己的项目中一起编译构建,并只需在程序端代码中包含头文件types/behaviac_types.h即可,其他“胶水”代码头文件不用包含,如下代码所示:
#include "behaviac_generated/types/behaviac_types.h"
6. 添加逻辑代码
打开上面生成的FirstAgent.cpp文件,为FirstAgent::m1方法添加自己的逻辑代码。注意所有自己添加的代码都需要添加在注释“///<<< BEGIN WRITING YOUR CODE”和“///<<< END WRITING YOUR CODE”之间,如下代码所示:
#include "FirstAgent.h" ///<<< BEGIN WRITING YOUR CODE FILE_INIT ///<<< END WRITING YOUR CODE FirstAgent::FirstAgent() { p1 = 0; ///<<< BEGIN WRITING YOUR CODE CONSTRUCTOR ///<<< END WRITING YOUR CODE } FirstAgent::~FirstAgent() { ///<<< BEGIN WRITING YOUR CODE DESTRUCTOR ///<<< END WRITING YOUR CODE } void FirstAgent::m1(behaviac::string& value) { ///<<< BEGIN WRITING YOUR CODE m1 printf("\n%s\n\n", value.c_str()); ///<<< END WRITING YOUR CODE } ///<<< BEGIN WRITING YOUR CODE FILE_UNINIT ///<<< END WRITING YOUR CODE
如果在类型信息浏览器中将成员方法m1改名为m2,点击右下方的“应用”按钮,重新生成代码,上面代码中的m1会自动变为m2,在BEGIN和END之间的手写代码不会改变,会自动保留。
7. 添加行为树
利用新加的FirstAgent类及其成员属性和方法,添加行为树“FirstBT”,如下图所示:
8. 执行行为树
加载并执行该行为树,可以看到输出结果如下图所示:
本教程相关的工作区和代码工程详见源码包的目录tutorials/tutorial_1_1。