Загрузка звукового банка FMOD на Android и cocos2d-x

У меня есть игра, работающая на iOS и Win32, написанная с использованием cocos2d-x c ++. Я также использую FMOD Studio для звука в игре.

Сейчас я портирую игру на Android, и у меня возникли проблемы с FMOD на Android. Я предполагаю, что проблема связана с загрузкой активов.

В настоящее время звуковая система успешно инициализируется. Я использую следующий код для загрузки банков, который работает на 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: Не удалось открыть файл assets / Sound / 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 (). В результате воспроизводился звук, но это был просто шум. Так что не совсем то, что я ищу.


person Astrophys    schedule 03.11.2014    source источник


Ответы (2)


Вероятно, что активы записываются в APK, для доступа к этим ресурсам префикс вашего пути к файлу с помощью file: /// android_asset /

person Mathew Block    schedule 19.08.2015

file: /// android_asset / решил проблему для меня с cocos2dx при попытке использовать внешнюю библиотеку, в данном случае fmod.

person rockefelox    schedule 21.10.2016