看到网上对本地MP3文件的读取多采用WWW加NAudio的方式。其中NAudio将MP3文件转为wav,再由WWW将wav文件加载为unity的AudioClip。
这里这么做的原因是WWW不支持MP3格式。这种做法较为陈旧。
unity新版的UnityWebRequestMultimedia已经支持了MP3格式。用法如下
private IEnumerator LoadMusic(string filepath)
{
filepath = "file://" + filepath;
using (var uwr = UnityWebRequestMultimedia.GetAudioClip(filepath, AudioType.MPEG))
{
yield return uwr.SendWebRequest();
if (uwr.isNetworkError)
{
Debug.LogError(uwr.error);
}
else {
AudioClip clip = DownloadHandlerAudioClip.GetContent(uwr);
// use audio clip
audioSource.clip = clip;
}
}
}
StartCoroutine(LoadMusic("/storage/emulated/0/a.mp3"));
StartCoroutine(LoadMusic("D:/a.mp3"));
这里测试了pc和安卓平台。
版本:unity2017.4.3f1 x64
ps:为了读取文件,需要对f应的权限。
edit->project settings->player->configuration
write permission设置为external
---------------------------------
补充 (20190610) :
看了下面的评论, 今天重新试了一下, 发现已经不行了(on windows), android 平台应该仍然可以(这里没有测试,不过评论里反映的基本上都是windows下不行).所以在windows下大家还是采用其他的方式, 比如
1. 使用 ogg 或 wav 等格式, 不使用 mp3 格式文件.
2. 使用NAudio 等库在加载时将 mp3 文件 转换为 wav 格式, 再进行加载.

本文介绍了Unity新版中使用UnityWebRequestMultimedia模块直接读取本地MP3文件的方法,该方法适用于PC和安卓平台,避免了通过NAudio转换为WAV的步骤。然而,据最新评论,此方法在Windows上可能已不再适用,建议使用Ogg或WAV格式,或者利用NAudio在加载时转换MP3为WAV。

3597

被折叠的 条评论
为什么被折叠?



