c# - Unity3D 从磁盘流式传输音频文件

标签 c# unity3d

我正在构建一个音频播放器,它需要能够播放构建时不可用的磁盘文件(以便用户可以放入自己的音乐)。 OGG/WAV 文件很好,我需要同时支持 Windows 和 OSX。我试过使用 WWW这样的类:

using UnityEngine;
using System.Collections;
using System.IO;

public class LoadAudio : MonoBehaviour
{
    AudioSource audioSrc;

    // Use this for initialization
    void Start()
    {
        if(audioSrc == null) audioSrc = new AudioSource();
        StartCoroutine(LoadTrack(Path.Combine(Application.streamingAssetsPath, "Track.ogg")));
    }

    IEnumerator LoadTrack(string filename)
    {
        var www = new WWW(filename);

        while(www.progress < 0.2)
        {
            Debug.LogFormat("Progress loading {0}: {1}", filename, www.progress);
            yield return new WaitForSeconds(0.1f);
        }

        var clip = www.GetAudioClip(false, true, AudioType.OGGVORBIS);

        audioSrc.clip = clip;
        audioSrc.Play();
    }

    // Update is called once per frame
    void Update()
    {

    }
}

但是,当我运行此程序时,我的调试日志消息多次打印出进度为 0,然后我收到控制台中看不到的错误。在编辑器日志中,我可以看到这个错误:

Error: Cannot create FMOD::Sound instance for resource D􉂬 (Operation could not be performed because specified sound/DSP connection is not ready. )
UnityEngine.WWW:GetAudioClipInternal(Boolean, Boolean, Boolean, AudioType)
UnityEngine.WWW:GetAudioClip(Boolean, Boolean, AudioType) (at C:\buildslave\unity\build\artifacts\generated\common\runtime\UtilsBindings.gen.cs:334)
<LoadTrack>c__Iterator0:MoveNext() (at Assets\LoadAudio.cs:27)

此错误看起来与此 Unity bug report 中引发的错误相似,然而这应该在版本 5.3.0 中得到修复,而我使用的是 5.3.4。

假设这不是 Unity 中的错误,我做错了什么?如果这是一个错误,那么有人知道解决方法吗?

编辑:我向 Unity 提交了错误报告,他们确认他们已经重现了该错误,但可能需要很长时间才能修复。因此,我希望能找到解决此问题的方法。

最佳答案

在文件路径的开头添加 file:// 解决了这个问题。

关于c# - Unity3D 从磁盘流式传输音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016464/

相关文章:

c# - 如何从不同的主机连接到我的 SignalR 集线器?

c# - 如何在游戏对象上动态设置随机 Material

c# - 有什么方法可以用大量可编写脚本的对象填充列表

user-interface - 如何通过脚本访问OnClick事件

android - 从ImageTarget Android获取模型对象

c# - 从在线资源统一将图像保存在移动设备上

c# - 如何根据c#中的列标题清除数据集行

c# - 将通用嵌套列表转换为数据表

c# - 如何在 ASP.Net 和 C# 网页中将 Reporting Services 报告显示为内联 PDF?

c# - 为什么我找不到 RadioButtonFor 方法?