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; }