练习 - 使用混响向空间音频添加距离
在上一练习中,你为声音添加了空间化,让他们有方向感。 在本练习中,你将添加混响效果,以赋予声音一种距离感。
添加混响组和混响效果
以前,我们添加了混音器。 默认情况下,混音器包含一个 组 ,称为 Master。 由于我们只想对某些声音应用混响效果,因此让我们为这些声音添加第二个组。 若要添加组,请右键单击音频混音器中的主组,然后选择“添加子组”。 为组指定合适的名称;例如 会议室效果:
每个 组 都有自己的一组效果。 若要对新组产生混响效果,请右键单击 会议室效果 混响器,选择 底部的“添加效果”,然后选择 “SFX 混响”。
在音频术语中,原始、未验证的音频称为 干路径,使用混响筛选器筛选后的音频称为 湿路径。 这两条路径都发送到音频输出,这种混合物中的相对强度称为 湿/干混合。 湿/干混合强烈影响距离感。
SFX Reverb 包括用于调整效果中的湿/干混合的控件。 由于 Microsoft Spatializer 插件处理干路径,因此我们将仅对湿路径使用 SFX Reverb 。 在 SFX Reverb 的“检查器”窗格中:
- 将 Dry Level 属性设置为最低设置(-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 组件的检查器窗口中分配这些值:
- 将 会议室效果组 属性设置为新的会议室效果混音器组。
- 将 Master Group 属性设置为主混音器组。