音源组件(AudioSource)
音源是场景中在某个位置的发声装置,好像一个喇叭。它播放着音频片段 (Audio Clip)。
发出的声音将输出到声音监听器(audio listener),或者声音混淆器(audio mixer)。稍后再说混淆器,一般相机会默认自带一个AudioListener组件,也就是说一个场景中,存在了默认相机的情况下,我们只要添加一个音源,设置了播放的音频片段,就可以完成播放的操作,而对于听到的声音强弱和效果,则根据后续需要解释的参数来决定。
音源可以播放任意类型的音频片段(Audio Clip),它可以被配置为 2D音源、 3D音源或者2D、3D的混合形式(Spatial Blend,即空间混合,稍后会进行解释)。
声音可以通过多个扬声器进行输出,用于模拟立体声 。(可以模拟出7.1声道的立体声,7.1声道系统的作用简单来说就是在听者的周围建立起一套前后声场相对平衡的声场) 。
声音也可以在3D和2D之间进行空间混合变换,这种变换可以通过在距离上的衰减曲线来进行控制。另外,如果声音监听器(listener) 伴随着一个或者多个回音区域(Reverb Zones), 音源将同时产生回音。
也可以对音源应用一些特殊的音频滤波器来获得更加丰富的音效体验。具体解释可以看音频效果文档( Audio Effects)。
AudioSource组件属性参数:
属性名称: |
中文名称: |
功能解释: |
Audio Clip |
音频片段 |
指向即将播放的音频片段(Audio Clip)。 |
Output |
音源输出 |
可以输出到音频监听器(AudioListener)或者(AudioMixer)。当设置为空时,即代表输出到AudioListener,而设置到AudioMixer时需要指定具体的AudioMixer。 |
Mute |
是否静音 |
即音源在继续播放,但是被静音。与关闭音源的区别时,当恢复时,播放的进度不同。{对于游戏中音效的暂停最好使用这项,它不会卸载声音数据,可以做到及时播放,音效一般比较多、占用内存小,使用静音可以让画面快速响应,且可以立刻恢复当前音效,暂停音乐可以使用AudioSource的Pause、Stop或者GameObject的enable,一般不需要及时响应,此时可以使用Stop,它会卸载音频数据节省内存。当然如果内存富余也可以使用其它方式,注意Mute跟其它方式的区别:Mute的音源在继续播放着,只是听不到而已,Pause是播放暂停,而Stop是完全停止,恢复时将从头播放。} |
Bypass Effects |
音源滤波开关 |
是那些作用在当前音源的音频滤波器的开关。{滤波器包括“高通滤波”、“低通滤波”、“回波滤波”、“扭曲滤波”、“回音滤波”、“和声滤波”等,这些滤波器可以设置在音源或者监听器上,勾选此项时,将使那些设置在音源的滤波器失效} |
Bypass Listener Effects |
监听器滤波开关 |
是那些作用在当前监听器的音频滤波器的开关。{同上,勾选此项时,将使那些设置在监听器的滤波器失效} |
Bypass Reverb Zones |
回音混淆开关 |
当勾选时,不执行回音混淆,即便现在玩家位于回音区域,此音源也不会产生回音。回音效果取决于监听器位置(一般代表玩家位置)与回音区域位置关系,而与音源没有直接关联。详细见“回音区域”章节。 |
Play On Awake |
启动播放开关 |
如果勾选的话,那么当GameObject加载并启用时,立刻播放音频,即相当于此音源GameObject的组件中Awake方法作用时开始播放。如果不勾选的话,需要手动调用Play()方法执行播放。 |
Loop |
循环播放开关 |
当勾选时,如果音频播放结束,将从头开始再次循环播放。 |
Priority |
播放优先级 |
决定了当前音源在当前场景存在的所有音源中的播放优先级。(优先级: 0 = 最重要. 256 = 最不重要. 默认值 = 128.). 背景音乐最好使用0,避免它们有时被其它音源替换出去。{一般手机或者其它播放设备最多允许32个音源同时播放,这个优先级参数决定了在超出音源数目时,需要暂时关闭一些不重要的音源,优先播放更重要的音源} |
Volume |
音源音量 |
此音量代表了监听器处于距离音源1米时的音量大小,代表了最大音量处的声音大小。 |
Pitch |
音频音调 |
代表了播放音频时速度的变化量,默认值是1,代表了正常的播放速度。{当<1时,慢速播放,当>1时,快速播放,速度越快,则音调越高} |
Stereo Pan |
声道占比 |
此数值在[-1,1]之间变化,代表了2D音源的左右声道占比,默认值为0,代表左右声道输出同样音量大小。{此数值针对2D音源或者2D、3D混合音源有效,纯3D音源无效} |
Spatial Blend |
空间混合 |
此数值在[0,1]之间变化,指定当前音源是2D音源、3D音源,还是二者插值的复合音源,此参数决定了引擎作用在此音源上的3D效果的份量。 {主要影响“3D Sound Settings”属性组中的参数表现,比如,如果是2D音源,声音在距离上不衰减,也就没有多普勒效果。无论2D、3D,与音频滤波器不关联。例如即便是纯2D音源,它仍然响应回音区域,而滤波器的控制主要由相应的滤波参数和音源滤波混合参数决定,混合参数如前面讲到的Bypass Effects、Bypass Listner Effects两个开关以及后面讲到的Reverb Zone Mix。 也就是说,此参数与“3D Sound Settings”属性组中的3D音频设置参数共同作用构成最终的输出,而当纯2D音源时,3D音频设置将无视,纯3D音源时,3D音频设置得到完整输出,非纯情况则插值混合输出。} |
Reverb Zone Mix |
回音混合 |
设置输出到混响区域中的信号量,一般在[0,1]范围内变化, 不过也允许额外最多放大10分贝(1 - 1.1]来增强声音的远近效果。{也就是说,回响效果的回响距离等很多复杂参数主要由回响滤波器实现,而回响音量大小主要由此因子来简单控制} |
3D Sound Settings |
3D音频设置 |
以下参数按比例与空间混合参数共同作用 |
Doppler Level |
多普勒等级 |
在[0,5]之间变化,默认值为1,决定了音源的多普勒效应的份量,如果设置为0,则没有多普勒效应。{多普勒效应指的是当监听器与音源之间发生相对运动时,声音传递速度发生变化时的效果。 假设有一架飞机掠过上空,飞机上的警报器每个一秒钟发出一次声音,如果相对静止,则听到的效果是完整的每个一秒一次警报(尽管发出到听到需要较长的时间,但是间隔应该是一样的),而当飞机向我快速靠近时,由于距离在不断缩短,从发声到听到的距离在不断缩小,因此传递所化的时间越来越少,我方听到的警报应该是越来越紧促,而非均匀的每秒一次,靠近速度越快,警报间隔越短。当飞机快速离去时,则情况恰好相反,警报声音节奏越来越松缓。} |
Spread |
传播角度 |
设置扬声器空间的立体声传播角度。{好像稍稍影响了回音效果,其它暂时没看出太大的影响,如果读者有更详细解释请告知。} |
Min Distance |
最小距离 |
默认值为1米,代表了音量曲线中的最大音量位置。超越最小距离时,声音将逐渐衰减。如果增大最小距离,则将相当于增大了3D世界中的声音,因为最小距离以下的位置均获得最大音量。如果减小最小距离,则相当于减小了3D世界中声音。{因为由Volume参数可知,在曲线上1米处为最大音量,默认曲线<1米处均获得最大音量,而当MinDistance<1时,默认曲线中X=1处的音量响应也会变小。注意上图中Listener竖线代表了监听器与当前音源的相对距离,而与Volume曲线的交点即是:1米处的最大音量经过3D世界距离传播到当前位置而衰减后的音量大小,即如果在曲线上,1米处Y坐标是0.8,而Listener处Y坐标是0.4,那么最终音量是衰减了50%,此参数与Volume参数共同作用输出最终音量大小,也即Volume*0.5} |
Max Distance |
最大距离 |
当超出此距离时,声音将停止衰减。{注意这里是停止衰减,也就是说,后续更远处听到的声音将保持在最大距离点的声音大小,不代表声音为0} |
Rolloff Mode |
衰减模式 |
代表了声音在距离上的衰减速度, (具体衰减数值由曲线决定,X-距离,Y-衰减后剩余百分比). |
- Logarithmic Rolloff |
对数衰减曲线 | 预制的对数衰减曲线,可以修改。 |
- Linear Rolloff |
线性衰减曲线 | 预制的线性衰减曲线,可以修改。 |
- Custom Rolloff |
自定义衰减曲线 | 自定义的衰减曲线,完全手动设置。 |
音源可以设置的衰减曲线模型
距离曲线函数
以下声音属性可以通过距离曲线来修改,此处的距离是指音源和监听器中的距离。
Volume: 振幅(0.0 - 1.0)在距离上的变化曲线。
Spatial Blend: 空间混合参数在距离上的变化曲线, 空间混合参数代表了2D音源-3D音源的插值,2D音源:原始的声道匹配,3D音源:将当前所有声道混合转换成单声道,在距离和方向上进行衰减。
Spread: 传播角度在距离上的变化曲线(degrees 0.0 - 360.0)。
Low-Pass (只有当音源添加低通滤波器LowPassFilter时出现): 截断频率(22000.0–10.0) 在距离上的变化曲线。
Reverb Zone: 回音混合参数在距离上的变化曲线,注意振幅属性、距离和方向上的衰减将被首先应用到信号,因此它们将同时影响到直接传播的声音信号和回音信号。
距离曲线函数,包括振幅(Volume)、空间混合(Spatial Blend)、传播角度(Spread)、低通滤波器(Low-Pass audio filter)和回音混合(Reverb Zone Mix)。
上图中当前监听器到当前音源距离由红色垂直线段标出。你可以通过直接编辑此曲线来改变此距离函数。如果编辑曲线,可以查看编辑曲线(Editing Curves)。
创建音源
如果音源没有被赋予音频片段(Audio Clip),那么它什么也不会做。音频片段是指那些可以被播放的音频文件。音源就像是一个播放器,可以通过它控制音频片段的播放、停止和改变播放属性。
新建音源的步骤:
- 导入音频文件到你的Unity工程.它们就是音频片段(Audio Clips)。
- 通过菜单:GameObject->Create Empty,创建一个空对象。
- 选中此GameObject,选择Component->Audio->Audio Source来添加音源脚本组件。
- 在inspector面板中,将步骤1中的音频片段赋给音源组件。
小技巧: 如果你想快速为某个音频片段创建一个音源,你可以拖动这个音频片段到某个GameObject的属性面板(inspector)上,或者直接拖动到场景中任意位置,两种情况下都将自动创建音源脚本。