Unity3D动态读取外部MP3文件给AudioSource

在PC端VR游戏开发中,须要动态加载本地的MP3文件,可是Unity3D不知道出于什么缘由,到5.4.0也不支持MP3文件的外部加载(目前只支持wav和ogg)。.net

所以要想经过www来加载mp3文件就只能采用曲线救国的方式,将MP3文件读取后转为wav或者ogg,而后再给AudioSource来播放code

因为只是在PC端进行开发,故这里采用NAudio.dll这个类库。使用NAudio须要将项目Unity3D工程的API版本改为.net 2.0(默认是.net 2.0 sub,在PlayerSetting->OtherSettings的Api Compatibility Level)。将NAudio.dll放置在项目的Plugins文件夹下。blog

代码部分以下游戏

using System.Collections;
using System.IO;
using NAudio.Wave;
using UnityEngine;ip

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

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

相关文章
相关标签/搜索