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

来源:互联网 发布:学北京话软件 编辑:程序博客网 时间:2024/05/19 13:15

转载连接

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

NAduio下载

0 0