unity如何以文件流方式异步加载外部音频文件并返回AudioClip
时间: 2023-09-07 19:11:31 浏览: 118
在Unity中也可以以文件流的方式异步加载外部音频文件并返回AudioClip。下面是一个简单的示例代码:
```csharp
IEnumerator LoadAudio(string path, Action<AudioClip> callback)
{
using (var www = new WWW(path))
{
yield return www;
if (www.error != null)
{
Debug.Log(www.error);
yield break;
}
AudioClip audioClip = www.GetAudioClip(false, false);
if (audioClip.loadState == AudioDataLoadState.Loaded)
{
callback(audioClip);
}
else
{
audioClip.LoadAudioDataAsync().completed += (op) =>
{
callback(audioClip);
};
}
}
}
```
这个示例代码使用WWW从指定的路径中获取音频文件,并使用GetAudioClip将音频文件转换为AudioClip。如果AudioClip的loadState为Loaded,则直接调用回调函数返回AudioClip,否则使用LoadAudioDataAsync()方法异步加载AudioClip,并在加载完成后调用回调函数返回AudioClip。需要注意的是,由于WWW是一个废弃的类,建议使用UnityWebRequest来代替。
阅读全文