本文档描述的是3.6及以后版本,对于3.5及以前的老版本请参考分类“3.5”。

如《教程1:Hello Behaviac》所述,程序端的类型代码可以通过编辑器自动生成基本原型,然后在生成的代码模板上继续添加自己的逻辑代码。

本教程将详细介绍相关的具体操作步骤,包括:从创建Agent类型到生成其代码文件,并利用该Agent类型创建行为树,最后执行该行为树的流程。

1. 新建Agent类型

通过编辑器的菜单项“视图”->“类型信息”(或快捷键Ctrl+M),打开类型信息浏览器,如下图所示:

empty_types

点击右上角的“新增”按钮,弹出“新增类型”窗口,添加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

发表评论

电子邮件地址不会被公开。 必填项已用*标注