unity环境下调用fmod_stdio.cs下的接口loadBankFile读取bank文件有问题

是一定要把bank文件从streamingassetdatapath拷贝到persistdatapath目录下吗 ?(persistdatapath有读和写权限)

你好,

能麻烦你再详细描述一下你是如何读取bank文件的,以及读取bank文件后遇到的问题吗?不知有无显示什么错误信息呢?

正常来说并不需要把bank文件从 StreamingAssetDataPath 移出,请问你使用的是什么版本的FMOD Unity插件呢?这个问题是发生在团结引擎还是普通Unity上呢?


普通unity引擎的 这个接口可以读取到StreamingAssetDataPath 下的bank吗

您看看我发的

如果您只是想要加载Bank文件的话,是可以直接从StreamingAssetDataPath下读取到Bank文件的,请问您的StreamingAsset 文件夹里有实际存在的Bank文件吗?因为Studio::System::loadBankFile 是更底层的控制,它会需要通过文件系统的绝对路径来加载Bank文件。

一般的使用方法如下:

using System.IO;
using FMODUnity;
using FMOD.Studio;

public class FMODLoader : MonoBehaviour
{
    private FMOD.Studio.Bank masterBank;

    void Start()
    {
        // 获取StreamingAssets的路径
        string masterBankPath = Path.Combine(Application.streamingAssetsPath, "Master.bank");

        // 加载Master.bank文件
        RuntimeManager.StudioSystem.loadBankFile(masterBankPath, LOAD_BANK_FLAGS.NORMAL, out masterBank);

        // 可以用来检查加载是否成功
        var result = masterBank.isValid();
        Debug.Log("Master.bank loaded state: " + result);
    }
}

此外如果您想更直接方便一点的加载Bank文件的话,我们还有更高层一些的接口可以考虑使用: RuntimeManager.StudioSystem.loadBank

具体的使用方法可参考:

using UnityEngine;
using FMODUnity;  

public class FMODLoadBank : MonoBehaviour
{
    [BankRef]
    public List<string> bankRefs = new List<string>();

    void Start()
    {
        // 加载bank文件
        RuntimeManager.LoadBank(bankRefs[0]);
    }
}

您可以试一下看看问题是否还存在,如果还有问题的话欢迎随时问我,或者方便的话能提供更多信息让我调查看看么?

感谢回复 我先自己试试

1 Like