建设工程施工安全网站合肥网站运营
2026/1/11 15:57:20 网站建设 项目流程
建设工程施工安全网站,合肥网站运营,wordpress rss导入,怎么在手机上搭建网站原文 运行时#xff08;游戏#xff09;端使用行为树之前#xff0c;需要确保行为树文件已经成功导出。 如何注册和导出类型信息请参考C类型信息的注册和导出#xff0c;如何导出行为树请参考导出和使用XML/BSON行为树。 通过编辑器导出行为树文件后#xff0c;运行时端…原文运行时游戏端使用行为树之前需要确保行为树文件已经成功导出。如何注册和导出类型信息请参考C类型信息的注册和导出如何导出行为树请参考导出和使用XML/BSON行为树。通过编辑器导出行为树文件后运行时端的执行主要分为三个部分初始化循环更新清理1 初始化在游戏的初始化函数中添加初始化behaviac组件所需的功能例如注册Agent子类信息、设置行为树文件的加载路径和文件格式、创建Agent子类的实例、加载行为树并设置当前所需执行的行为树等。如下代码所示boolInitBehavic(behaviac::Workspace::EFileFormat ff){behaviac::Config::SetSocketBlocking(false);behaviac::Config::SetSocketPort(8081);behaviac::Agent::RegisterCBTPlayer();behaviac::Workspace::GetInstance()-SetFilePath(../test/demo_running/behaviac/exported);behaviac::Workspace::GetInstance()-SetFileFormat(ff);behaviac::Workspace::GetInstance()-ExportMetas(../test/demo_running/behaviac/demo_running.xml);//behaviac::Agent::SetIdMask(kIdMask_Wolrd | kIdMask_Opponent);behaviac::Workspace::GetInstance()-SetDeltaFrames(1);returntrue;}boolInitPlayer(constchar*pszTreeName){g_playerbehaviac::Agent::CreateCBTPlayer();boolbRetfalse;bRetg_player-btload(pszTreeName);assert(bRet);g_player-btsetcurrent(pszTreeName);returnbRet;}关于文件路径的说明Workspace::SetFilePath指定的是编辑器中Workspace的导出路径可以是绝对路径。当指定的是相对路径的时候相对的是当前工作路径一般都是运行程序所在目录。Agent::btload使用的文件名是相对于Workspace::SetFilePath指定的路径没有扩展名可以有目录结构的层次化文件名如“node_test/selector_loop_ut_7”。在编辑器中打开某个行为树后右键文件页选取“复制文件名”获取。例如如果运行程序所在目录或者VS里指定的工作路径$(TargetDir)是”D:\Test\bin”Workspace::SetFilePath指定的相对路径是“…/behaviac/workspace/exported”btload指定是“node_test/selector_loop_ut_7”则workspace的导出路径实际是“D:/Test/behaviac/workspace/exported”而相应的导出行为树文件是“D:/Test/behaviac/workspace/exported/node_test/selector_loop_ut_7.xml”或“D:/Test/behaviac/workspace/exported/node_test/selector_loop_ut_7.bson.bytes”。具体是xml或bson则由Workspace::SetFileFormat确定。当指定格式是cpp或c#的时候导出的行为树是cpp或c#源码已经编译构建进可执行程序Agent::btload指定的文件名跟xml的用法一样无需修改btload的参数只是用来标识该行为树的从而代码可以据此创建相应的行为树不像xml或bson格式的时候需要加载数据文件。如果Agent::btload加载失败请注意检查当前路径Workspace::SetFilePath设定的导出路径以及Agent::btload指定的文件标识。还可以在当前路径里检查log文件_behaviac_$_$_.log2 循环更新在游戏的主循环中添加执行Agent实例的行为树相关代码也即通过调用Agent类的接口btexec()或Workspace类的接口Update()来执行行为树。这两种执行方式的区别请参考更新流程。如下代码样例所示voidUpdateLoop(){inti0;intframes0;behaviac::EBTStatus statusbehaviac::BT_RUNNING;while(statusbehaviac::BT_RUNNING){coutframe framesstd::endl;statusg_player-btexec();}}3 清理最后的清理过程包括销毁Agent子类的实例以及反注册Agent子类信息等。如下代码样例所示voidCleanupPlayer(){behaviac::Agent::Destroy(g_player);}voidCleanupBehaviac(){behaviac::Agent::UnRegisterCBTPlayer();behaviac::Workspace::GetInstance()-Cleanup();}以上步骤的完整代码请参考demo_running.cpp文件。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询