unity下进行pc端开发的时候,仅支持使用脚本动态加载wav和ogg格式的音频文件,而ios和安卓端却支持直接加载mp3文件,而mp3格式的音频文件体积小,更为通用,因此不少时候须要pc端也使用mp3文件。ios
要在pc端加载mp3,须要使用两个库,首先,是NAudio,用于将mp3转为wav,NAudio对Unity老版本的支持不太好,这里有好心人作了个适用于unity的Naudio:git
https://github.com/WulfMarius/NAudio-Unitygithub
而后是unityWav库,用于将流或者byte加载到AudioClip以供unity使用:url
https://github.com/deadlyfingers/UnityWavcode
unityWav库很小,就一个文件WavUtility.cs,下载下来放在script目录下便可。ip
NAudio-Unity使用vs打开工程,编译出NAudio-Unity.dll放在Plugin目录下便可。开发
代码以下:get
public Button bStart; public Text tTip; void Start () { bStart.onClick.AddListener(OnStartClick); } void OnStartClick() { string mp3file = "file:///d:/test.mp3"; //本地的mp3音频 string mp3url = "http://xx.xx.com/test.mp3"; //网上的的mp3音频 StartCoroutine(Mp3toClip(mp3url)); //根据状况选择 } public AudioSource au; //用于播放音频的AudioSource IEnumerator Mp3toClip(string mp3Position) { WWW www = new WWW(mp3Position); yield return www; if (www.isDone) { var stream = new MemoryStream(www.bytes); var reader = new Mp3FileReader(stream); //若是要保存为本地的mp3文件,则使用下面两条语句 //FileStream filestream = new FileInfo("d:/test.mp3").Create(); //filestream.Write(www.bytes, 0, www.bytes.Length); //若是须要保存为本地的wav文件,则使用下面的语句 //WaveFileWriter.CreateWaveFile("d:/test.wav", reader); var outstream = new MemoryStream(); WaveFileWriter.WriteWavFileToStream(outstream, reader); //加载为AudioClip au.clip = WavUtility.ToAudioClip(outstream.ToArray(), 0); au.Play(); //播放音频 } yield break; }