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

NAudio.dll的下載地址http://naudio.codeplex.com/releases/view/612263


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM