練習 - 使用殘響將距離新增至空間音訊

已完成

在上一個練習中,您已新增音效空間化,以賦予音效方向感。 在此練習中,您將新增殘響效果,讓音效具有距離感。

新增混音器群組和殘響效果

  1. 之前,我們已新增了混音器。 混音器預設包含一個名為 Master群組。 因為我們只想將殘響效果套用至某些音效,所以要為這些音效新增第二個群組。 若要新增群組,請以滑鼠右鍵按一下 [音訊混音器]Master 群組,然後選擇 [加入子群組]。 為群組指定適當的名稱;例如會議室效果

    Screenshot of Add child group.

  2. 每個群組都有一組自己的效果。 若要對新群組產生殘響效果,請以滑鼠右鍵按兩下 [會議室效果] 混音器,接著選取 [在底部新增效果],然後選取 [SFX 殘響]

    Screenshot of Add SFX Reverb.

    在音訊術語中,原始、未使用迴響的音訊稱為「未經處理的音訊路徑」,而已使用迴響濾波器篩選頻率後的音訊則稱為「經過處理的音訊路徑」。 這兩個路徑都會傳送至音訊輸出,而此混合的相對強度則稱為「經過處理/未經處理的混合」。 經過處理/未經處理的混合會強烈影響距離感。

  3. [SFX Reverb] (SFX 殘響) 包含的控制項,可調整效果內經過處理/未經處理的混合。 因為 Microsoft Spatializer 外掛程式會處理未經處理的音訊路徑,所以 [SFX Reverb] (SFX 殘響) 只會用來處理經過處理的音訊路徑。 在 [SFX 殘響] 的 [偵測器] 窗格中:

    1. 將 [未經處理等級] 屬性設為最低設定 (-10000 mB)。
    2. 將 [會議室] 屬性設定為最高設定 (0 mB)。

    Screenshot of SFX Reverb properties.

    其他設定可控制模擬會議室的風格。 Decay Time (衰減時間) 與感知到的會議室大小特別相關。

播放影片時實現殘響

  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 群組] 屬性設定為 Master 混音器群組。

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