C2C电子商务网站管理系统山东网站制作软件
2025/12/27 5:33:55 网站建设 项目流程
C2C电子商务网站管理系统,山东网站制作软件,网站设计协议,陈村网站开发原文 本文档描述的是3.6及以后版本#xff0c;对于3.5及以前的老版本请参考分类“3.5”。有的时候#xff0c;由于自身项目的需要#xff0c;例如对行为树文件进行加密、打包等处理#xff0c;behaviac组件默认提供的文件加载机制不再满足需要#xff0c;因此程序端需要定…原文本文档描述的是3.6及以后版本对于3.5及以前的老版本请参考分类“3.5”。有的时候由于自身项目的需要例如对行为树文件进行加密、打包等处理behaviac组件默认提供的文件加载机制不再满足需要因此程序端需要定制自己的读取方式来加载行为树文件。C版1. 需要从behaviac::CFileManager派生出自己的子类并根据需要重载相关的方法如下代码所示#includebehaviac/common/file/filemanager.hclassBEHAVIAC_APIMyFileManager:publicbehaviac::CFileManager{public:BEHAVIAC_DECLARE_MEMORY_OPERATORS(MyFileManager);MyFileManager();virtual~MyFileManager();virtualbehaviac::IFile*FileOpen(constchar*fileName,behaviac::CFileSystem::EOpenMode iOpenAccessbehaviac::CFileSystem::EOpenMode_Read);virtualvoidFileClose(behaviac::IFile*file);virtualboolFileExists(constchar*fileName);virtualboolFileExists(constbehaviac::stringfilePath,constbehaviac::stringext);virtualuint64_tFileGetSize(constchar*fileName);virtualbehaviac::wstringGetCurrentWorkingDirectory();};2. 根据自己的开发平台需要实现相应的方法这里只是简单的调用了基类的同名方法仅用于演示流程如下代码所示#includemyfilemanager.hMyFileManager::MyFileManager(){}MyFileManager::~MyFileManager(){}behaviac::IFile*MyFileManager::FileOpen(constchar*fileName,behaviac::CFileSystem::EOpenMode iOpenAccess){// 需要实现自己的代码这里直接调用基类的方法仅供演示returnCFileManager::FileOpen(fileName,iOpenAccess);}voidMyFileManager::FileClose(behaviac::IFile*file){CFileManager::FileClose(file);}boolMyFileManager::FileExists(constbehaviac::stringfilePath,constbehaviac::stringext){returnCFileManager::FileExists(filePath,ext);}boolMyFileManager::FileExists(constchar*fileName){returnCFileManager::FileExists(fileName);}uint64_tMyFileManager::FileGetSize(constchar*fileName){returnCFileManager::FileGetSize(fileName);}behaviac::wstringMyFileManager::GetCurrentWorkingDirectory(){returnCFileManager::GetCurrentWorkingDirectory();}3. 在程序端初始化的地方创建MyFileManager实例如下代码所示boolInitBehavic(){LOGI(InitBehavic\n);g_MyFileManagerBEHAVIAC_NEWMyFileManager();behaviac::Workspace::GetInstance()-SetFilePath(../tutorials/tutorial_10/cpp/exported);behaviac::Workspace::GetInstance()-SetFileFormat(behaviac::Workspace::EFF_xml);returntrue;}4. 调用Agent::btload()方法就可以通过上面实现的MyFileManager来加载行为树文件了Agent::btload()方法内部会执行到MyFileManager::FileOpen()方法如下代码所示boolInitPlayer(){LOGI(InitPlayer\n);g_FirstAgentbehaviac::Agent::CreateFirstAgent();boolbRetg_FirstAgent-btload(FirstBT);g_FirstAgent-btsetcurrent(FirstBT);returnbRet;}5. 在程序端结束清理的地方销毁上面创建的MyFileManager实例如下代码所示voidCleanupBehaviac(){LOGI(CleanupBehaviac\n);behaviac::Workspace::GetInstance()-Cleanup();if(g_MyFileManager){BEHAVIAC_DELETE(g_MyFileManager);g_MyFileManagerNULL;}}C#版1. 需要从behaviac.FileManager派生出自己的子类并根据需要重载相关的方法这里只是简单的调用了基类的同名方法仅用于演示流程如下代码所示publicclassMyFileManager:behaviac.FileManager{publicMyFileManager(){}publicoverride byte[]FileOpen(string filePath,string ext){// 需要实现自己的代码这里直接调用基类的方法仅供演示returnbase.FileOpen(filePath,ext);}publicoverridevoidFileClose(string filePath,string ext,byte[]fileHandle){base.FileClose(filePath,ext,fileHandle);}}2. 在程序端初始化的地方创建MyFileManager实例如下代码所示staticboolInitBehavic(){Console.WriteLine(InitBehavic);g_MyFileManagernewMyFileManager();behaviac.Workspace.Instance.FilePath../../exported;behaviac.Workspace.Instance.FileFormatbehaviac.Workspace.EFileFormat.EFF_xml;returntrue;}3. 调用Agent.btload()方法就可以通过上面实现的MyFileManager来加载行为树文件了Agent.btload()方法内部会执行到MyFileManager.FileOpen()方法如下代码所示staticboolInitPlayer(){Console.WriteLine(InitPlayer);g_FirstAgentnewFirstAgent();boolbRetg_FirstAgent.btload(FirstBT);Debug.Assert(bRet);g_FirstAgent.btsetcurrent(FirstBT);returnbRet;}4. 在程序端结束清理的地方释放上面创建的MyFileManager实例引用如下代码所示staticvoidCleanupBehaviac(){Console.WriteLine(CleanupBehaviac);behaviac.Workspace.Instance.Cleanup();g_MyFileManagernull;}本教程相关的工作区和代码工程详见源码包的目录tutorials/tutorial_10。

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

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

立即咨询