练习 - 使用混响向空间音频添加距离
在上一个练习中,你为声音添加了空间化,使它们具有方向感。 在本练习中,你将添加混响效果,让声音具有距离感。
添加混音器组和混响效果
我们之前添加了一个混音器。 默认情况下,混音器包含一个称为“母带”的组。 由于我们只想将混响效果应用于某些声音,因此我们可以为这些声音添加另一个组。 若要添加组,请右键单击“混音器”中的母带组,选择“添加子组”。 为组指定适当的名称,例如“房间效果”:
每个组都有自己的效果集。 若要为新组添加混响效果,请右键单击“房间效果”混响器,选择“在底部添加效果”,然后选择“SFX 混响”。
在音频术语中,原始、无混响的音频称为干路径,使用混响筛选器筛选后的音频被称为湿路径。 这两个路径都发送到音频输出,其在此混合中的相对强度称为“湿/干混合”。 湿/干混合会严重影响距离感。
SFX 混响包括控件,用于调整效果中的湿/干混合。 由于 Microsoft Spatializer 插件处理干路径,因此我们将仅对湿路径使用 SFX 混响。 在 SFX 混响的“检查器”窗格中:
- 将“干级别”属性设置为最低 (-10000 mB)。
- 将 Room 属性设置为最高 (0 mB)。
其他设置控制模拟房间的感觉。 具体而言,衰减时间与感知到的空间大小相关。
在视频播放上启用混响
返回到 Visual Studio 并取消注释 SpatializeOnOff 脚本中的四个注释行。 该脚本现在如下所示:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; [RequireComponent(typeof(AudioSource))] public class SpatializeOnOff : MonoBehaviour { public GameObject ButtonTextObject; public AudioMixerGroup RoomEffectGroup; public AudioMixerGroup MasterGroup; private AudioSource m_SourceObject; private bool m_IsSpatialized; private TMPro.TextMeshPro m_TextMeshPro; public void Start() { m_SourceObject = gameObject.GetComponent<AudioSource>(); m_TextMeshPro = ButtonTextObject.GetComponent<TMPro.TextMeshPro>(); SetSpatialized(); } public void SwapSpatialization() { if (m_IsSpatialized) { SetStereo(); } else { SetSpatialized(); } } private void SetSpatialized() { m_IsSpatialized = true; m_SourceObject.spatialBlend = 1; m_TextMeshPro.SetText("Set Stereo"); m_SourceObject.outputAudioMixerGroup = RoomEffectGroup; } private void SetStereo() { m_IsSpatialized = false; m_SourceObject.spatialBlend = 0; m_TextMeshPro.SetText("Set Spatialized"); m_SourceObject.outputAudioMixerGroup = MasterGroup; } }
取消注释这些行后,它会向 SpatializeOnOff 脚本的的“检查器”窗口添加两个属性。 在 Quad 的 SpatializeOnOff 组件的检查器窗口中分配它们:
- 将房间效果组属性设置为新的房间效果混音器组。
- 将母带组属性设置为母带混音器组。