Unity 3D 音效实现

引子

最近项目有用到场景音效
稍微研究了下在Unity中该如何实现3D音效的效果

前提

基于 Unity3d 5.4 ,因为我用的是5.4 ,不清楚其他版本的问题

2D音效和3D音效的区别是,2D音效的声音不会随着距离改变而改变声音大小,3D音效有
所以,3D音效必须要依靠距离来确定声音大小

Unity 里面提供了声音监听器 AudioListener, 你可以理解为你的耳朵,就像Camera是你的眼睛一样
一般游戏里面,这个 AudioListener 监听器挂在 Camera 上。

Unity 提供AudioSound ,你可以理解为声音源

属性名 属性介绍
AudioClip 声音片段,还可以在代码中去动态的截取音乐文件
Mute 是否静音
Bypass Effects 是否打开音频特效
Play On Awake 开机自动播放
Loop 循环播放
Volume 声音大小,取值范围0.0 到 1.0
Pitch 播放速度,取值范围在 -3 到 3 之间 设置1 为正常播放,小于1 为减慢播放 大于1为加速播放
Stereo Pan 立体声,-1 ~ 1 ,负值靠近左声道,正值靠近右声道
属性名 属性介绍
Spatial Blend 设置3D引擎对音频源有多大影响。值为0-1,0为2D音,1为3D音,可以使用曲线调节
Reverb Zone Mix 混响区输出

3DSoundSetting

属性名 属性介绍
Doppler Level 确定应用于此音频源的多普勒效果(如果设置为0,则不应用效果)。
Volum Rolloff 声音衰减类型
Min Distance 最小衰减距离,比它小的不衰减
Max Distance 最大衰减距离,比它大的也不衰减

还可以调节曲线让衰减声音听起来更平和,或更真实

实现

  1. 将 AudioListener 放置在 Camera 上
  2. 调节声音源参数,可实现多套预知,调用预知初始化声源,只设置声音片段和声音大小
  3. 声源跟随发声者移动