一、音频资源
Unity中的音频文件分为两类:原生的音频或者是压缩的音频。
-
压缩音频:通过从编辑器导入设置选择compressed选项,音频数据将很小,但在播放时会消耗CPU周期来解码。
-
原生音频:对于短音效使用未压缩音频(WAV,AIFF)。音频数据将较大,但是声音在播放是不需要解码。
Unity 支持导入以下格式:.aif、.wav、.mp3、.ogg
格式 | MAC/PC上使用压缩格式 | 移动平台上使用的压缩格式 |
---|---|---|
MPEG | Ogg Vorbis | MP3 |
Ogg Vorbis | Ogg Vorbis | MP3 |
WAV | Ogg Vorbis | MP3 |
AIFF | Ogg Vorbis | MP3 |
Unity 中对音频文件的属性设置:
-
Force To Mono(强制单声道):如果启用,该音频剪辑将向下混合到单通道声音。
-
Load Type(加载类型):运行时Unity加载音频的方法。
-
Decompress on load(加载时解压缩):加载后解压缩声音。使用于较小的压缩声音,以避免运行时解压缩的性能开销。(将使用比在它们在内存中压缩的多10倍或更多内存,因此大文件不要使用这个。)
-
Compressed in memory(内存中压缩):保持声音在内存中压缩,在播放时解压缩。这有轻微的性能开销(尤其是OGG / Vorbis格式的压缩文件),因此大文件使用这个。
-
Stream from disc(从磁盘流):直接从磁盘流读取音频数据。这只使用了原始声音占内存大小的很小一部分。使用这个用于很长的音乐。取决于硬件,一般建议1-2线程同时流。
-
二、Unity 设置
我们想要在 Unity 中利用声音插件(audio spatalizer plugin)来实现空间声音,只需要在设置菜单中 Edit > Audio > Spatializer 启用 Microsoft HRTF
拓展就好。
三、基本属性
更多属性见:https://docs.unity3d.com/Manual/class-AudioSource.html
-
AudioClip:指定需要播放的音频文件。
-
Mute:是否静音。
-
Play On Awake:音频是否在场景启动时自动播放。
-
Loop:是否循环播放。
-
Pitch:播放速度,取值范围在 -3 到 3 之间,设置1 为正常播放。
-
Spatial Blend:设置声音是 2D 声音,还是 3D 声音。3D声音距离音源的距离会影响听到声音的大小,2D声音不会影响。
-
3D Sound Settings
-
Douppler Level(多普勒级别):决定了多普勒效应将被应用到这个音频信号源的数值(如果设置为0,就是无效果)。
-
Spread(扩散):设置 3D 立体声或多声道扬声器的空间的扩散角度。
-
Volume Rolloff:声音淡出的速度有多快。该值越高,越接近侦听器最先听到声音。
-
Logarithmic Rolloff(对数衰减):当你接近音频源,声音响亮;但是当你越远离对象,声音下降越快,对数递减。
-
Linear Rolloff(线性衰减):越远离音频源,声音越小,线性递减。
-
Custom Rolloff(自定义衰减):根据自定义的衰减图形决定。
-
-
Min Distance:当距离小于设定值时,停止声音的增大。
-
Max Distance:当距离大于设定值时,停止声音的衰减。
-
Spatialize:是否开启空间化,3D 立体声需要开启。
-
四、Audio Listener
Audio Listener(声音侦听器),其实就是我们在游戏世界中的“耳朵”。我们依靠这个组件来听游戏世界中的声音,如果没有了这个组件,我们是听不到任何声音的。
每个场景只能有1个音频侦听器正常工作。 默认状态这个组件,是挂载到摄像机身上的。
五、常用函数
更多函数见:https://docs.unity3d.com/ScriptReference/AudioSource.html
函数名 | 说明 |
---|---|
Play() | 播放音频 |
Stop() | 停止播放 |
Pause() | 暂停播放 |
UnPause() | 继续播放 |
六、示例代码
来源于:https://docs.microsoft.com/zh-cn/windows/mixed-reality/holograms-101#chapter-5---spatial-sound
1 | using UnityEngine; |