Unity之音频详解

Audio Clip

AudioClip概述

1. Audio Clip包含了被Audio Sources使用的Audio Data。

2. Unity支持Mono(单声道),Stereo(立体声),多声道音频资源(多达8个通道)

3. Unity可以导入的音频文件格式有:.aif、.wav、.mp3和.ogg。Unity还可以导入.xm、.mod、.it和.s3m格式的跟踪器模块(Tracker Module),尽管在资源导入检查器中没有可用的波形预览,跟踪器模块资源的行为与Unity中任何其他音频资源相同,

Unity之音频详解

Audio Clip Inspector选项和属性

1. Force To Mono:

  • 当这个选项开启时,在包装之前,多通道音频将会被混合到单通道音轨。
  • 在向下混合后信号是峰值归一化的,因为向下混合过程通常会导致信号比初始的信号更安静(Quiet),因此峰值归一化信号给稍后的通过AudioSource音量属性来进行调整提供了更好的净空(Headroom)。

2. Normalize:

  • 单位化,当ForceToMono开启后,此选项可使用。
  • 当此选项被启用时,音频将在“Force To Mono”的混合过程中被单位化/规范化。

3. Load In Background

  • 后台加载。
  • 当启用此选项时,这个Clip将在一个单独的线程中延迟加载,而不会阻塞主线程。
  • 默认是关闭的,以确保标准的当场景开始播放时所有的AudioClips已经被加载的Unity标准行为。
  • 加载状态可以通过使用AudioClip.loadState属性进行查询。

4. Ambisonic

  • Ambisonic 音频资源可以根据听着的方向旋转声场的形式形式存储音频。
  • 对于360度视频和XR应用程序非常有用。
  • 如果AudioFile包含三维编码音频,则开启此项。

5. Audio Clip的LoadType

Unity之音频详解

(1) Decompress On Load:

  • 音频文件将在加载后立即解压缩

  • 将此选项用于较小的压缩声音,以避免动态解压缩的性能开销

  • 将vorbis编码的声音解压到负载上要比压缩它们多占用大约10倍的内存(对于ADPCM编码,大约是3.5倍),因此不要将此选项用于大型文件

(2) Compressed In Memory:

  • 保持声音压缩在内存中,当播放时才解压

  • 这个选项有轻微的性能开销(特别是对于Ogg/Vorbis压缩文件),所以只在较大的文件中使用它,因为在加载时解压缩会占用大量的内存

  • 解压是发生在mixer线程,可以在“DSP CPU”部分的音频窗格的剖析器窗口中监视

(3) Streaming:

  • 动态解码声音。该方法使用最少的内存来缓冲从磁盘中增量读取并动态解码的压缩数据
  • 注意:解压发生在单独的流线程上,可以在profiler窗口的音频窗格的“ Steaming CPU”部分监视它的CPU使用情况。
  • Streaming clips即使没有加载音频数据也有一个大约200KB的重载。

6. Preload Audio Data:

  • 如果启用,AudioClip将会在场景加载时被预加载
  • 这个在默认情况下是打开的用来反映标准的Unity的行为,即当场景开始播放时,所有的AudioClips已经完成了加载
  • 如果这个标志没有被设置,音频数据也会在第一次AudioSource.Play()、AudioSource.PlayOneShot()执行时被加载,或者也可以通过AudioSource.LoadAudioData()和通过AudioSource.UnloadAudioData()再次加载时被加载。

7. Compression Format:

  • 声音在运行时将会被使用的指定的格式
  • 注意:可用选项取决于当前选择的构建目标。

Unity之音频详解

(1) PCM:

  • 这个选项提供了以更大的文件大小的代价提供了更高的质量。
  • 这个选项对于非常短的声音效果是非常好的

(2) Vorbis/MP3:

Unity之音频详解

  • 压缩导致了更小的文件但是与PCM Audio相比质量有所下降
  • 可以通过Quality滑块配置压缩量。
  • 这种格式最适合中等长度的音效和音乐
  • Quality有关

(3) ADPCM:

  • 这种格式对于包含相当多的噪音并且需要大量播放的声音非常有用,比如脚步声、撞击声、武器声

  • 压缩比是PCM的3.5倍,但CPU使用率比MP3/Vorbis格式低得多,这使它成为上述声音类别的首选。

9. Sample Rate Setting:

Unity之音频详解

  • PCM和ADPCM压缩格式允许自动优化或者手动降低采样率

(1) Preserve Sample Rate:此设置保持采样率不被修改(默认)

(2) Optimize Sample Rate:该设置根据分析的最高的频率内容自动优化采样率。

(3) Override Sample Rate:此设置允许手动覆盖采样率,因此可以有效地使用此设置来丢弃频率内容

Unity之音频详解

 

Unity之音频详解

注意:

1. 修改AudioClip属性选项之后记得点击Apply应用。

Unity之音频详解

2. 如果这个一个MP3文件和压缩格式设置为PCM(即未压缩),由此产生的Ratio比例将超过100%,因为文件现在存储未压缩的空间比它来自于的源MP3占据更多空间。

AudioSource

Unity之音频详解

Audio Source概述

1. AudioSource在场景中回放AudioClip。

2. AudioClip可以播放给AudioListener或者通过AudioMaxer

3. AudioSource可以播放任意类型的AudioClip并且能够配置为2D, 3D或者作为一个Mixture(Spatial Blend空间混合)播放。音频可以在扬声器(Speakers)之间播放(立体声到7.1)并且也可以在3D和2D之间变形(Spatial Blend)。

4. 可以通过衰减曲线控制距离。

5. 如果监听器在一个或多个混响区域(Reverb Zones),混响将应用到源。

6. 单独的过滤器可以应用到每个Andio Source来获得更丰富的音频体验。

AudioSource属性

1. Audio Clip:将被播放的声音Clip的引用

2. Output:

  • 默认情况下,Clip直接输出到场景中的AudioListener。
  • 使用这个属性可以输出Clip到Audio Mixer

3. Mute:如果启用,声音将会被播放但是会静音。

4. BypassEffects:

Unity之音频详解

5. BypassListenerEffects:

Unity之音频详解

6. BypassReverbZones:

Unity之音频详解

7. PlayOnAwake:

  • 如果启用,声音将在场景启动时开始播放。
  • 如果禁用,则需要使用脚本中的Play()命令来启动它

8. Loop:当AudioClip播放结束时使其循环播放。

9. Priority:

  • 确定该Audio Source在场景中所有共存的AndioSource中的优先级。
  • 优先级为0时最重要,为256时最不重要,默认值为128。

10. Volume:

  • 距离Audio Listener一个世界单位(1米)的声音有多大

11. Pitch:

  • 由于AudioClip加速或者监督二导致音高(Pitch)的变化。
  • 1表示是正常的播放速度。

12. Stereo Pan:

  • 立体声平移。
  • 设置2D声音的立体声场的位置。

Unity之音频详解

13. Spatial Blend:

  • 设置AudioSource被看作3D源的成都。

Unity之音频详解

14. Reverb Zone Mix

  • 混响区混合,Mix设置路由到混响区的输出信号的量。
  • 该量在0-1之间是线性变化的(比如音量)。
  • 在[1,1.1]将会进行10分贝的放大,这对于实现近场和远处声音的效果很有用。

Unity之音频详解

Unity之音频详解

3D声音设置

Unity之音频详解

1. DopplerLevel:如何设置为0,则音量将不会受到AudioListener和AudioSource之间的速度影响。

Unity之音频详解

2. Spread:设置3D声音在扬声器空间传播的角度。

Unity之音频详解

3. MinDistance:

  • 在最小的距离内,声音会尽可能的大。
  • 在MinDistance之外,它将开始衰减。
  • 增加声音的最小距离,让它在3d世界里“更响”,在3d世界里降低MinDistance,让它“更安静”。

4. MaxDistance:

  • 声音停止衰减的距离。
  • 超过这个点,音量将会保持在MaxDistance的音量不变,并且将不会再衰减

5. Volume Rolloff:

  • 音量滚降模式。表示声音消失得有多快。
  • 值越高,听着在听到声音之前就必须离得越近。

(1) Logarithmic Rolloff:

  • 当靠近声源时声音很大,当原理声源时,音量会迅速衰减。

(2) Linearithmic Rolloff:

  • 线性衰减,离声源越远,能听到的越少。

(3) Custom Rolloff:

  • 自定义衰减声音。
  • 在曲线上点击鼠标右键,添加关键点即可绘制曲线。

Unity之音频详解

Unity之音频详解

Unity之音频详解

DistanceFunction

Unity之音频详解

创建AudioSource

1. 通过创建空的GameObject附加AudioSource组件建立。

2. 直接将AudioClip拖入Scen视图或者Hierarchy视图中建立。

Unity之音频详解

AudioListener

AudioListener概述

1. AudioListener充当类似麦克风的设备。

2. 它接收场景中来自任何给定的AudioSource的输入并且通过电脑扬声器播放声音

3. 对于大多数应用程序来说,将AudioListener附加到主摄像机时最合理的

4. 如果一个AudioListener在混响区范围内,则混响将作用于场景中所有可听到的声音。

5. AudioEffects可以应用到AudioListener并且将会在应用到场景中所有可听到的声音中

6. AudioListener没有属性,知识必须添加到工作中。默认情况下,总是被添加到主摄像头。

Unity之音频详解

7. AudioListener与AudioSource一起工作。当Audio Listener连接到场景中的GameObject(游戏物体)上时,任何与Listener足够近的AudioSource都会被接收并输出到计算机的扬声器上

8. 每个场景只能有一个AudioListener正常工作。

9. 如果声源是3D的(AudioClip中的导入设置),则AudioListener将模拟声音在3D世界中的位置、速度和方向(可以在音频源中非常详细地调整衰减和3D/2D行为),2D将忽略任何3D处理。

10.可以通过Edit->ProjectSettings->Audio设置音频选项:

Unity之音频详解

Audio Mixer混音器

1. Unity Audio Mixer允许混合各种音频资源,应用效果,执行mastering(母版)。

Audio Mixer Window

1. 打开Audio Mixer Window:

Unity之音频详解

Unity之音频详解

2. 窗口显示的Audio Mexer基本上就是一个Audio Mixer树组。一个AudioMixer组本质上是Audio的混合,一个允许你应用音量衰减和音高校正的信号链;它允许你插入处理音频信号的效果,并改变效果的参数。还有一个发送和返回机制来将结果从一个总线传递到另一个总线。

3. 音频混频器是一个Asset。可以创建一个或多个音频混频器,并在任何时候有一个以上的活动。音频混频器总是包含一个主组。然后可以添加其他组来定义混合器的结构。

4. 将Audio Source的输出路由到音频混频器中的组,这些Effct将被应用到那个信号上。一个音频混频器的输出可以路由到任何其他组在任何其他音频混频器的场景,因此可以链接在一个场景中的多个音频混频器,以产生复杂的路由,效果处理和快照应用。

Unity之音频详解