练习 - 使用混响向空间音频添加距离

已完成

在上一练习中,你为声音添加了空间化,让他们有方向感。 在本练习中,你将添加混响效果,以赋予声音一种距离感。

添加混响组和混响效果

  1. 以前,我们添加了混音器。 默认情况下,混音器包含一个 ,称为 Master。 由于我们只想对某些声音应用混响效果,因此让我们为这些声音添加第二个组。 若要添加组,请右键单击音频混音器中的组,然后选择“添加子组”。 为组指定合适的名称;例如 会议室效果

    “添加子组”的屏幕截图。

  2. 每个 都有自己的一组效果。 若要对新组产生混响效果,请右键单击 会议室效果 混响器,选择 底部的“添加效果”,然后选择 “SFX 混响”。

    添加 SFX Reverb 的屏幕截图。

    在音频术语中,原始、未验证的音频称为 干路径,使用混响筛选器筛选后的音频称为 湿路径。 这两条路径都发送到音频输出,这种混合物中的相对强度称为 湿/干混合。 湿/干混合强烈影响距离感。

  3. SFX Reverb 包括用于调整效果中的湿/干混合的控件。 由于 Microsoft Spatializer 插件处理干路径,因此我们将仅对湿路径使用 SFX Reverb 。 在 SFX Reverb 的“检查器”窗格中:

    1. Dry Level 属性设置为最低设置(-10000 mB)。
    2. Room 属性设置为最高设置 (0 mB)。

    SFX Reverb 属性的屏幕截图。

    其他设置控制模拟房间的感觉。 特别是 ,衰减时间 与感知的空间大小相关。

在视频播放上启用混响

  1. 返回到 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;
        }
    }
    
    
  2. 取消注释这些行后,它会向 SpatializeOnOff 脚本的检查器窗口添加两个属性。 在 Quad的 SpatializeOnOff 组件的检查器窗口中分配这些值:

    1. 会议室效果组 属性设置为新的会议室效果混音器组。
    2. Master Group 属性设置为主混音器组。

    新的 SpatializeOnOff 字段的屏幕截图,其中选择了正确的选项。