OpenHarmony平台,团结引擎导出空工程加载StreamingAsset报错ERR_FILE_NOTFOUND

团结版本1.5.3

Fmod版本 2.03.09

报错信息:

[FMOD] System::loadBankFile(jar:file://rawfile/Data/StreamingAssets/music_03.assets.bank, 0, 0x5cd99ed1e8) returned ERR_FILE_NOTFOUND for STUDIO_SYSTEM (0x1FFF1F).
FMODUnity.RuntimeManager:ERROR_CALLBACK(IntPtr, SYSTEM_CALLBACK_TYPE, IntPtr, IntPtr, IntPtr)

你好,感谢你分享的版本号和日志!

请问你是通过什么方式加载 Bank 的呢?

在其他版本的团结引擎或者使用FMOD自带的示例工程文件也会出现同样的问题吗?可否麻烦你点击这个Create New Example Project新建一个样例工程文件,并在团结引擎里切换成该样例工程文件,看看是否还会报相同的错误呢?

您好,我用团结的Editor模式可以正常加载music_03.assets.bank, 去掉.bank在编辑器模式下也可以正常加载,但是鸿蒙平台都无法加载。并且我试了下直接挂载脚本加载Demo的Event在鸿蒙是可以正常加载的。猜测是不是鸿蒙的StreamingAsset资源加载有问题

我换了一种方式,改为通过加载Byte的方式可以在鸿蒙平台正常加载:
var request = UnityEngine.Networking.UnityWebRequest.Get(bankPath);
request.SendWebRequest();
while (true)
{
if (request.isDone)
{
break;
}
}

loadResult = Instance.studioSystem.loadBankMemory(request.downloadHandler.data, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out loadedBank.Bank);

感谢你分享的解决方案!

我这边在调查测试时使用的团结引擎1.5.3 和 FMOD 2.03.09,设备是Mate 60 pro,导出空工程时候仍然没有办法复现你遇到的这个问题,不知可否麻烦你提供更多信息呢?比如:

  • 鸿蒙平台无法加载,指的是你导出工程文件后用DevEco Studio部署到测试机后无法听到声音么?
  • 你导出空工程文件的时候没有用代码,而是是直接只用了EventEmitter脚本,播放自定义的music_03.assets 这个bank里的Event,然后报错ERR_FILE_NOTFOUND么?
  • 可否麻烦你分享一下FMOD Settings的截图呢,我想看看是否有什么我复现时做的不同的地方。

您好,感谢回复!这是我的配置

  • 鸿蒙平台无法加载,指的是你导出工程文件后用DevEco Studio部署到测试机后无法听到声音么?
    这个指的是我调用如下接口:
    FMOD.RESULT loadResult = RuntimeManager.StudioSystem.loadBankFile($“{Application.streamingAssetsPath}/music_03.assets.bank”,
    LOAD_BANK_FLAGS.NORMAL, out var bank);
    会报错:System::loadBankFile(jar:file://rawfile/Data/StreamingAssets/music_03.assets.bank, 0, 0x5cd99ed1e8) returned ERR_FILE_NOTFOUND for STUDIO_SYSTEM (0x1FFF1F).

  • 你导出空工程文件的时候没有用代码,而是是直接只用了EventEmitter脚本,播放自定义的music_03.assets 这个bank里的Event,然后报错ERR_FILE_NOTFOUND么?
    如果没有用代码的方式,使用EventEmitter脚本是可以正常播放的

请问您那里测试的时候,是通过RuntimeManager.StudioSystem.loadBankFile($“{Application.streamingAssetsPath}/music_03.assets.bank”, 这个接口测试的吗

非常感谢您提供的详细信息和截图!

我这边已经成功复现了您提到的问题,根据我目前的调查来看,似乎确实是之前的修复只覆盖了 RuntimeManager.LoadBank ,而遗漏了System.loadBankFile这个API。我已经把这个问题提交给了开发团队进行跟进,一旦有新的进展了我会第一时间在本帖更新。

再次感谢您帮助我们注意到这个问题!

好的,感谢回复!