我正在构建一个音频播放器,它需要能够播放构建时不可用的磁盘文件(以便用户可以放入自己的音乐)。 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/