我有一个在iOS和Win32上运行的游戏,使用cocos2d-x c ++编写。我还在游戏中使用FMOD Studio来发声。
我现在将游戏移植到Android,我在Android上遇到FMOD问题。我认为这个问题与资产加载有关。
目前音响系统已成功初始化。我使用以下代码加载可在iOS和Windows上运行的银行:
void FMODWrapper::loadBank(const char * bankFile)
{
FMOD_RESULT result;
std::string path = FileUtils::getInstance()->fullPathForFilename(bankFile);
FMOD::Studio::Bank *bank;
if (path.size() > 0)
{
result = system->loadBankFile(path.c_str(), FMOD_STUDIO_LOAD_BANK_NORMAL, &bank);
if (result != FMOD_OK)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
LOGD("FMOD error! Unable to load bank: %s %d\n", path.c_str(), result);
#else
printf("FMOD error! Unable to load bank: %s\n", path.c_str());
#endif
}
_loadedBanks.push_back(bank);
}
}
当我使用FMOD调试库运行时,我得到以下输出:
11-02 20:48:50.173:I / fmod(2459):FMOD: AsyncCommand_system_loadBankFile :: executeMain:无法打开文件 '资产/声音/ MX_AND_SFX_MASTER_BANK.bank' 11-02 20:48:50.173: I / fmod(2459):../../ src / fmod_asynccommand_impl.cpp(443):FMOD错误 (20):找不到文件。 11-02 20:48:50.173:I / fmod(2459):FMOD: Debug_OutputTrace: ../../src/fmod_asynccommand_impl.cpp(443):FMOD错误(20):文件没有 找到。
assets / Sound / MX_AND_SFX_MASTER_BANK.bank对于我的资产驻留在我的eclipse项目中的位置是正确的。
任何人都知道我应该传递给loadBankFile()调用。
另外,我尝试将loadBankMemory与FileUtils :: getDataFromFile()一起使用。这导致声音播放,但它只是噪音。所以不是我想要的。
答案 0 :(得分:0)
可能是资产被写入APK,使用file访问文件路径的那些资源前缀:/// android_asset /
答案 1 :(得分:0)
file:/// android_asset /在尝试使用外部库时,cocos2dx为我解决了问题,在这种情况下为fmod。