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
Unity3D动态读取外部MP3文件给AudioSource的更多相关文章
- Unity3D移动平台动态读取外部文件全解析
前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑 ...
- (转)Unity3D移动平台动态读取外部文件全解析
Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一直有 ...
- 慕容小匹夫 Unity3D移动平台动态读取外部文件全解析
Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一 ...
- 细说Unity3D(一)——移动平台动态读取外部文件全解析
前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和 ...
- 利用Python读取外部数据文件
不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数 ...
- php读取外部txt文件内容并打印在页面|fopen()函数
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...
- 呼叫外部js文件并使用其内部方法
很久没有学习jQuery了,都快忘记了.今天学习一个小功能,使用jQuery的$.getScript()方法,是读取外部js文件,读取之后,并执行js文件内的一个方法. 首先我们创建这个js文件,如i ...
- spark-submit --files 动态加载外部资源文件
在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问.在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: val is ...
随机推荐
- runtime ---- iOS
1.runtime是什么?runtime是一套底层的C语言的API(包括C语言数据类型,C语言函数) 实际上平时我们写的OC代码底层都是基于runtime,实际上也就是最后都转成了runtime代码 ...
- css3绘制腾讯logo
CSS3绘制的腾讯LOGO,下边是对比图. 演示地址
- python之列表对象
1. 获取列表中的某个值 描述:获取下标所对应的值 语法: print(li[0]) #[取索引值] 样例: li = list(['a','b','c']) val=(li[0]) #获取下标所对应 ...
- 由merge into引起的序列跳号
最近生产库反应出一个问题,某张表的主键ID并没有按照原计划的期望增加,而是间歇性跳号,每次跳2万多,经过研究发现是某个同步过程的merge into引起的,具体语句如下 merge into t_if ...
- Win32/MFC/COM学习推荐书籍
以前有不少朋友问关于学习各种技术的推荐书籍的问题,这里把我觉得比较好的一些书籍列一下,希望能起到抛砖引玉的作用就好了:) Win32开发 Programming Windows by Charles ...
- MASM32快速起步
MASM32是一个免费的软件程序,让您编辑Microsoft宏汇编程序(MASM)代码从一个基本的文本界面.它强调MASM代码各部分以不同的颜色,使其更容易扫描和检测错误.它提供了一个简单的布局程序员 ...
- Ant学习总结3(很多的属性,用的时候方便查找)
感谢原作者:http://blog.csdn.net/lipeijs3/article/details/5137160 一. Ant 与 Makefile : GNU Mak ...
- C# TCP多线程服务器示例
前言 之前一直很少接触多线程这块.这次项目中刚好用到了网络编程TCP这块,做一个服务端,需要使用到多线程,所以记录下过程.希望可以帮到自己的同时能给别人带来一点点收获- 关于TCP的介绍就不多讲,神马 ...
- mfc---CFileDialog的过滤器
CFileDialog的过滤器每种类型由两部分组成“tda|*.tda”,两种类型之间用“|”隔开
- 《学习记录》ng2-bootstrap中的component使用教程
前序: 现在angular2已经除了集成的angular-cli,建议大家可以基于这个来快速开发ng2的项目,不用自己再搭建环境: 相关内容请前往:https://angular.cn/docs/ts ...