zoukankan      html  css  js  c++  java
  • 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:UsersCGZDesktop1.mp3", @"C:UsersCGZDesktop1.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

    个人博客请访问:http://www.cnblogs.com/CodeGize/
  • 相关阅读:
    浅谈px,em和rem这些单位的区别
    nodejs中的formidable模块
    es6中的Symbol.iterator属性
    jQuery源码解析----内部插入的外部函数
    关于js函数中存在异步的情况下的变量的分析
    jQuery源码解析----模拟核心buildFragment
    jQuery源码解析----模拟html()、text()、val()
    Config
    Zuul
    Hystrix
  • 原文地址:https://www.cnblogs.com/CodeGize/p/5785435.html
Copyright © 2011-2022 走看看