在使用behaviac运行时端(Runtime)的源代码或API时,有几个最常用的类值得注意:如Workspace、Agent、Config等。

Workspace类

Workspace类主要用于管理类型信息的导出,加载、卸载、执行、停止执行行为树,设置时间和帧数等。

  • GetInstance() :用于获取Workspace的单件实例。
  • ExportMetas(const char*) :导出类型信息文件到指定的路径,详见文档《C++运行时端中类型信息的注册和导出》。
  • SetFilePath(const char*) :用于加载行为树时指定行为树文件所在的目录。
  • SetFileFormat(EFileFormat) :用于指定加载行为树文件的格式,包括Xml、Bson、Cpp/Cs、Default。其中Default表示先尝试加载Xml格式,如果找不到再尝试加载Bson格式,最后尝试加载Cpp/Cs格式,这个功能可用于行为树的热更新。
  • Update() :用于执行所有Agent的当前行为树,行为树的执行也可以不通过该API,可以自己单独调用Agent的btexec()方法,详见文档《运行时端的更新流程》。
  • DebugUpdate() :用于执行调试和热加载相关的方法,如果已经使用了Update()方法来执行,则连调或热加载时就不需要再调用该DebugUpdate()方法。
  • SetIsExecAgents(bool) :用于停止/继续执行所有Agent的当前行为树,前提是行为树是执行是通过Update()方法发起的。如果是自己单独调用Agent的btexec()方法,则通过Agent的SetActive(bool)方法来停止/继续执行。
  • SetTimeSinceStartup(double) :用于设置游戏从启动到当前的总时间,该总时间主要用于时间、等待时间等与时间有关的节点的执行。如果不每帧设置该值,这些节点将不会正常工作。
  • SetFrameSinceStartup(int) :用于设置游戏从启动到当前的总帧数,该总帧数主要用于帧数、等待帧数等与帧数有关的节点的执行。如果不每帧设置该值,这些节点将不会正常工作。

具体的代码可以查看behaviac/base/workspace.h

Agent类

静态方法:

  • Create(const char*, int, short) :用于创建Agent的实例。
  • Destroy(Agent*) :用于销毁Agent的实例。
  • Register() :注册该Agent类,用于记录该类的类型信息。
  • UnRegister() :取消注册该Agent类。
  • RegisterInstanceName(const char*, const wchar_t*, const wchar_t*) :注册实例名字,作为类型信息的一部分,导出后可用于编辑器中节点的配置。
  • UnRegisterInstanceName(const char*) :取消注册实例名字。
  • BindInstance(Agent*, const char*, int) :将某个Agent实例跟某个名字进行绑定。
  • UnbindInstance(const char*, int) :取消某个Agent实例跟某个名字的绑定。

成员方法:

  • btload(const char*, bool) :用于加载指定名字的行为树,不需要后缀名(文件格式)。
  • btunload(const char*) :用于卸载指定名字的行为树。
  • btsetcurrent(const char*) :用于设置当前行为树。
  • btexec() :执行当前行为树。
  • SetActive(bool) :用于停止/继续执行当前行为树,如果设置为false,表示停止执行当前行为树;否则,表示继续执行。
  • FireEvent(const char*) :用于发出事件,以便于行为树中绑定的事件得到响应。
  • SetIdFlag(uint32_t) :用于设置连调时是否需要跟踪该Agent。通过静态方法SetIdMask()设置全部Agent的Mask值,然后再通过SetIdFlag()设置当前Agent的Flag值。如果IsMasked()返回为真,则表明需要跟踪该Agent。
  • SetName(const char*) :用于设置名字。

具体的代码可以查看behaviac/agent/agent.h

Config类

详见文档《开发功能开关》。

发表评论

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