1. 程式人生 > >Unity3D動態讀取外部MP3檔案給AudioSource

Unity3D動態讀取外部MP3檔案給AudioSource

轉載連線

在PC端VR遊戲開發中,需要動態載入本地的MP3檔案,但是Unity3D不知道出於什麼原因,到5.4.0也不支援MP3檔案的外部載入(目前只支援wav和ogg)。

因此要想通過www來載入mp3檔案就只能採用曲線救國的方式,將MP3檔案讀取後轉為wav或者ogg,然後再給AudioSource來播放

由於只是在PC端進行開發,故這裡採用NAudio.dll這個類庫。使用NAudio需要將專案Unity3D工程的API版本改成.net 2.0(預設是.net 2.0 sub,在PlayerSetting->OtherSettings的Api Compatibility Level)。將NAudio.dll放置在專案的Plugins資料夾下。

程式碼部分如下

using System.Collections;      
using System.IO;       
using NAudio.Wave;       
using UnityEngine;    public class MusicLoad : MonoBehaviour      
{       
    protected void OnGUI()       
    {       
        if (GUILayout.Button("www"))       
        {       
            StartCoroutine(LoadMusic(@"C:\Users\CGZ\Desktop\1.mp3"
, @"C:\Users\CGZ\Desktop\1.wav")); } } public AudioSource Source; private IEnumerator LoadMusic(string filepath, string savepath) { var stream = File.Open(filepath, FileMode.Open); var reader = new Mp3FileReader(stream); WaveFileWriter.CreateWaveFile(savepath, reader); var
www = new WWW("file://" + savepath); yield return www; var clip = www.audioClip; Source.clip = clip; Source.Play(); } }