• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱

android找不到bb.xml

0 喜欢 0 不喜欢
156 浏览
cocos中我这样初始化的

 std::string fullPath = FileUtils::getInstance()->getWritablePath();
 fullPath += "res/behaviac/exported/";
 CCLOG("export path %s", fullPath.c_str());
 behaviac::Workspace::GetInstance()->SetFilePath(fullPath.c_str());
 behaviac::Workspace::GetInstance()->SetFileFormat(behaviac::Workspace::EFF_xml);
 behaviac::Agent::Register<Ai>();
 behaviac::Workspace::GetInstance()->ExportMetas("res/behaviac/data.xml");
 

用cocos的FileUtils是可以找到对应文件的,因为我复制文件夹到可写路径了

 

07-05 21:11:45.379: I/libbehaviac(14901): [behaviac][00014][thread 0x0][21:11:45][INFO]'WorkspaceExportPath' is '/data/data/org.cocos2dx.TestBehaviac4CocosLua/files/res/behaviac/exported/'
07-05 21:11:45.379: I/libbehaviac(14901): [behaviac][00015][thread 0x0][21:11:45][ERROR]'/data/data/org.cocos2dx.TestBehaviac4CocosLua/files/res/behaviac/exported/behaviac.bb.xml' doesn't exist!, Please check the file name or override Workspace and its GetFilePath()
07-05 21:11:45.379: A/libc(14901): jni/../../../src/htn/agentproperties.cpp:633: static bool behaviac::AgentProperties::Load(): assertion "0" failed
07-05 21:11:45.379: A/libc(14901): Fatal signal 6 (SIGABRT) at 0x00003a35 (code=-6), thread 14979 (Thread-3890)
07-05 21:11:45.379: I/libbehaviac(14901): [behaviac][00016][thread 0x0][21:11:45][MSG]behaviac: Socket Thread Starting
07-05 21:11:45.379: I/libbehaviac(14901): [behaviac][00017][thread 0x0][21:11:45][MSG]behaviac: Listening at port 60636...
07-05 21:11:45.379: I/libbehaviac(14901): [behaviac][00018][thread 0x0][21:11:45][MSG]behaviac: accepting...
最新提问 7月 5, 2016 用户: qq_572f1d6579c40 (260 分)
我用的3.4.4的版本

1个回答

0 喜欢 0 不喜欢

bb.xml文件是编辑器生成的。

一般情况下它位于你导出的位置。

你这里应该是FilePath的问题。

可以参考提供的airbattledemo的例子。

在airbattledemo 例子中:

image

下面是 airbattledemo 设置FilePath的代码:

image

 

而且如下图,是你上面的输出,路径正确吗?

image

最新回答 7月 6, 2016 用户: jonygli (58,290 分)
CFileSystem::Handle CFileSystem::OpenCreateFile(const char* szFullPath, EOpenAccess openAccess)
 {
#if BEHAVIAC_COMPILER_ANDROID && (BEHAVIAC_COMPILER_ANDROID_VER > 8)
  AAssetManager* mgr = behaviac::CFileManager::GetInstance()->GetAssetManager();
  Handle hFile = FILE_SYSTEM_INVALID_HANDLE;

  if (openAccess != EOpenAccess_Read)
  {
   BEHAVIAC_LOGERROR("Only read mode is supported for asset files");
   return hFile;
  }

  if (behaviac::StringUtils::StartsWith(szFullPath, "assets:/"))
  {
   //skip "assets:/"
   const char* fileName = szFullPath + 8;

   AAsset* asset = AAssetManager_open(mgr, fileName, AASSET_MODE_UNKNOWN);

   hFile = (Handle)asset;
  }
  else
  {
   BEHAVIAC_LOGERROR("CFileSystem:OpenCreateFile szFullPath not start with assets:/ ")
  }

#else
  Handle hFile = fopen(szFullPath, openMode[openAccess]);

  if (!hFile)
  {
   BEHAVIAC_LOGERROR("Could not open file %s", szFullPath);
   return hFile;
  }

#endif
  return hFile;
 }

SetFilePath指定的目录是android的可写目录,路径是没错的,只是根据上面的源码,只能访问asserts资源,既然可写目录不可以,那么热更资源应该这么办呢?
热更新是另一个问题。(android上的热更新我们没有测过)

你这里,也许需要重载FileManager自行处理文件的读取。或者AssetManager需要相应的设置。上面的android上面的处理方式只是示例。也许你们可以有更好的处理,那样的话请重载FileManager

可以搜索FileManager获取用法。
既然这样,谢谢哈,我懂了
...