关于Unity中3D声音的使用
3D声音
3D立体声和2D声不同的地方是它是会随着距离衰减的,距离越近声音越大,距离越远声音越小。
1: 声音: 背景音乐和音效;
2: 声音文件支持的格式: ogg, mp3, wave, AIFF;
ogg比较流行,很多安卓里面的声音使用ogg的格式是为了绕开mp3的版权
ogg和mp3都比较常用
wave和ogg、mp3比起来比较大,没有压缩的数字音乐,可以直接写到声卡里面
3:音频管理器: Edit-->ProjectSetting--> Audio;和物理引擎一样有管理器
Global Volume: 全局播放的音量;
Volume Rolloff Scale: 衰减因子,越大,声音衰减越快;
Doppler Factor: 多普勒因子;模拟多普勒效应的监听效果:0关闭, 1 高速物体的多普勒效应会比较明显的监听的到;
Default Speak Mode: 设置扬声器模式;默认值为2(立体声, AudioSpeakModer); stereo立体声
System Sample Rate: (输出采样率);
DSP Buffer Size: 调整DSP缓冲区大小优化延迟和性能;越大效果越好
Max Virutal/Real Voices Count: 同时播放的真实声音的数量;虚拟的声音最后会和其他的声音混合在一起,所以比真实的声音多。
Disable Unity Audio: 是否使用音频;
音频监听器
类似于人的耳朵,把耳朵移动到哪里,就可以听到那里附近的声音,也可以比喻为话筒。如果场景中没有音频监听器,那么玩家是听不到声音的,即使那个物体正在发声。
1: 音频监听器在3D世界中扮演话筒的角色,他接受场景中输入的音频源,通过设备的扬声器来播放声音;
2: 当一个音频监听器挂载到场景中的一个游戏对象上,任何音源如果接近音频监听器,都会输出到计算机的扬声器中,每个场景中只能有一个音频监听器,一般会默认的添加到主摄像机上;这样摄像机拍到哪里我们就监听哪里的声音。
主摄像机初始化的时候也是带着Audio Listener组件的。
3: AudioClip: 声音文件,就是声音的资源文件
AudioSource(声源)
我们需要对声音进行衰减,需要计算监听器与声源的距离,需要对一些声源做混合,就要使用AudioSource组件,帮助我们播放AudioClip(音频文件)
1: 音频源: 在场景中播放音频剪辑,如果一个音频剪辑是一个3D,那么音频源就会在给定的位置,然后随着距离进行衰减,还可以在3D和2D之间进行切换;
2: 创建一个音频源:
(1): 导入要播放的声音文件;
(2): 创建一个节点,并加上Audio-->Audio Source组件;
(3): 将AudioClip加入到AudioSource中;
(4): 代码控制播放;
3:属性:
AudioClip: 要被播放的文件;
Output: 音频剪辑通过音频混合器输出;
Mute: 是否静音;
Play On Wake唤醒时播放;
loop: 是否循环播放;
Priority: 播放的优先级,0最高,256最低,默认128,优先级高的一般是重要的音效
Volume 音量 Pitch 音调 Stereo Pan立体声(-1左声道, 1右声道)
Spatial Blend(空间混合), 0为2D音效, 1为3D音效,2D音效不会做衰减
Spread: (3D)立体声在扬声器空间中的传播速度;
Volume Rolloff音量衰减模式: 对数(Logarithmic),线性(Linear)和自定义模式(Custom),自定义模式要自己加控制点。
Min Distance/Max Distance衰减的范围,衰减距离的 开始结束, 最小距离(声音保持最大量),最大距离(不再衰减)
当我们的音频监听器和声源的距离小于Min Distance的时候,都是最大声音,大于Max Distance的都是最小声音或者没有,这个取决于那个声音曲线的设置,一般自定义才可以设置超出Max距离后还有声音。
当我们调节Min Distance/Max Distance的时候,Scene视图里面的声源球的范围也会随之改变,两个球体之间的部分就是有衰减的部分。
声音实例
1.创建Unity工程目录
2.在resources文件夹下面创建一个sounds文件夹
3.把准备好的声音素材复制进去
4.点击音频资源右下角的播放可以播放,最后一行的数值的话,前面是码率,后面是声音的时间
5.创建一个audio的空节点,添加AudioSource组件
6.把准备好的音频文件audioclip文件拖进audio节点的AudioSource组件的属性中。
7.使用代码来控制声音播放,创建一个脚本audio_test挂载在audio节点下面
8.打开audio_test脚本
第一步:写一个public AudioSource s;公开属性,然后把audio节点拖进属性中,这样就关联好了自己的AudioSource组件(其实我觉得可以用getComponent获得组件,事实证明可以)
第二步:设置声音
using UnityEngine;
using System.Collections; public class audio_test : MonoBehaviour { public AudioSource s;
// Use this for initialization
void Start () {
// 声音的全局设置
AudioConfiguration audio_config = AudioSettings.GetConfiguration();
//....中间设置内容
AudioSettings.Reset(audio_config);//设置完后再放回去
// end
//上面两句必须写,不然下面那句执行无效,我也不知道为啥 // this.s.Play();//如果里面加数字不是延迟播放,而是类似快进,码率为快进1秒,码率X2位快进2秒
this.s.PlayDelayed();//延迟5秒播放
} // Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown()) {//鼠标左键按下
if (this.s.isPlaying)
{
this.s.Pause();
}
else {
this.s.Play();
}
}
if (Input.GetMouseButtonDown()) {//鼠标右键按下
this.s.Stop();
}
}
}
9.鼠标左键单击Game视图,声音过5秒播放,再点击暂停,再点击继续播放,鼠标右键停止播放。
关于Unity中3D声音的使用的更多相关文章
- 关于Unity中的声音管理模块(专题七)
声音的要素 1: 音频文件AudioClip2: 音源AudioSource;3: 耳朵AudioListener;//全局只能有一个4: 2D/3D音频;//2D只是简单地播放声音,3D可以根据距离 ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 在Unity中使用UGUI修改Mesh绘制几何图形
在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...
- 【unity shaders】:Unity中的Shader及其基本框架
shader和Material的基本关系 Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这个输出来将图 ...
- NGUI研究院之在Unity中使用贝塞尔曲线(六)[转]
鼎鼎大名的贝塞尔曲线相信大家都耳熟能详.这两天因为工作的原因需要将贝塞尔曲线加在工程中,那么MOMO迅速的研究了一下成果就分享给大家了哦.贝塞尔曲线的原理是由两个点构成的任意角度的曲线,这两个点一个是 ...
- Unity中简单使用Opengl
简介 由于项目特殊需求,需要在unity中使用一些OpenGL的东西来绘制图形(PS:其实就是有一个拖尾算法只有OpenGL版本~~~懒得改了,直接在unity中使用OpenGL算了).所以琢磨咯下如 ...
- Unity教程之再谈Unity中的优化技术
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体 这一步主要是为了针对性能瓶颈中的”顶点 ...
- Unity中加入Android项目的Build步骤
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 简介: 有的项目需要在Android中加入Unity功能,例如ANDROID应用中嵌入Un ...
- 【Unity技巧】Unity中的优化技术
http://blog.csdn.net/candycat1992/article/details/42127811 写在前面 这一篇是在Digital Tutors的一个系列教程的基础上总结扩展而得 ...
随机推荐
- 【Android】1.1 开发环境安装和配置
分类:C#.Android.VS2015: 创建日期:2016-01-20 2016-08-03说明:此版本已过时,最新版本见本博客置顶的内容. 一.安装JDK.SDK.NDK 无论是用C#和VS20 ...
- /etc/sudoers 配置
/etc/sudoers ## Allow root to run any commands anywhere root ALL=(ALL) ALL #第一个root是用户账号 第二列的ALL是登陆者 ...
- 乐观锁的一种实现方式—CAS
线程安全 众所周知,Java是多线程的.但是,Java对多线程的支持其实是一把双刃剑.一旦涉及到多个线程操作共享资源的情况时,处理不好就可能产生线程安全问题.线程安全性可能是非常复杂的,在没有充足的同 ...
- burpsuite扩展集成sqlmap插件
通常我们在使用sqlmap测试SQL注入问题的时候会先使用burpsuite来抓包,然后交给sqlmap进行扫描,此操作略显繁琐. 为了避免这种繁琐的重复操作可以将sqlmap以插件的方式集成到bur ...
- 光照渲染[Unity]
http://www.unitymanual.com/m/Manual/RenderingPaths.html http://wenku.baidu.com/view/54eca9e09b896802 ...
- spark on alluxio和MR on alluxio测试(改进版)【转】
转自:http://kaimingwan.com/post/alluxio/spark-on-alluxiohe-mr-on-alluxioce-shi-gai-jin-ban 1. 介绍 2. 准备 ...
- canvas的图片绘制案例
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- Asp.net页面中调用soapheader进行验证的操作步骤
Asp.net页面中调用以SOAP头作验证的web services操作步骤 第一步:用来作SOAP验证的类必须从SoapHeader类派生,类中Public的属性将出现在自动产生XML节点中,即: ...
- LeetCode:Sqrt(x) 解题报告
Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. SOLUTION 1: 参见:二分法总结,以及模 ...
- linux 的内核的作用和功能
Linux内核[kernel]是整个操作系统的最底层, 它负责整个硬件的驱动,以及提供各种系统所需的核心功能, 包括防火墙机制.是否支持LVM或Quota等文件系统等等, 如果内核不认识某个最新的硬件 ...