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

已完成

在上一个练习中,你为声音添加了空间化,使它们具有方向感。 在本练习中,你将添加混响效果,让声音具有距离感。

添加混音器组和混响效果

  1. 我们之前添加了一个混音器。 默认情况下,混音器包含一个称为“母带”的组。 由于我们只想将混响效果应用于某些声音,因此我们可以为这些声音添加另一个组。 若要添加组,请右键单击“混音器”中的母带组,选择“添加子组”。 为组指定适当的名称,例如“房间效果”:

    Screenshot of Add child group.

  2. 每个组都有自己的效果集。 若要为新组添加混响效果,请右键单击“房间效果”混响器,选择“在底部添加效果”,然后选择“SFX 混响”

    Screenshot of Add SFX Reverb.

    在音频术语中,原始、无混响的音频称为干路径,使用混响筛选器筛选后的音频被称为湿路径。 这两个路径都发送到音频输出,其在此混合中的相对强度称为“湿/干混合”。 湿/干混合会严重影响距离感。

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

    1. 将“干级别”属性设置为最低 (-10000 mB)
    2. 将 Room 属性设置为最高 (0 mB)

    Screenshot of SFX Reverb properties.

    其他设置控制模拟房间的感觉。 具体而言,衰减时间与感知到的空间大小相关。

在视频播放上启用混响

  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 脚本的的“检查器”窗口添加两个属性。 在 QuadSpatializeOnOff 组件的检查器窗口中分配它们:

    1. 将房间效果组属性设置为新的房间效果混音器组
    2. 将母带组属性设置为母带混音器组

    Screenshot of the new SpatializeOnOff fields with the correct options selected.