練習 - 使用殘響將距離新增至空間音訊
在上一個練習中,您已新增音效空間化,以賦予音效方向感。 在此練習中,您將新增殘響效果,讓音效具有距離感。
新增混音器群組和殘響效果
之前,我們已新增了混音器。 混音器預設包含一個名為 Master 的群組。 因為我們只想將殘響效果套用至某些音效,所以要為這些音效新增第二個群組。 若要新增群組,請以滑鼠右鍵按一下 [音訊混音器] 的 Master 群組,然後選擇 [加入子群組]。 為群組指定適當的名稱;例如會議室效果:
每個群組都有一組自己的效果。 若要對新群組產生殘響效果,請以滑鼠右鍵按兩下 [會議室效果] 混音器,接著選取 [在底部新增效果],然後選取 [SFX 殘響]。
在音訊術語中,原始、未使用迴響的音訊稱為「未經處理的音訊路徑」,而已使用迴響濾波器篩選頻率後的音訊則稱為「經過處理的音訊路徑」。 這兩個路徑都會傳送至音訊輸出,而此混合的相對強度則稱為「經過處理/未經處理的混合」。 經過處理/未經處理的混合會強烈影響距離感。
[SFX Reverb] (SFX 殘響) 包含的控制項,可調整效果內經過處理/未經處理的混合。 因為 Microsoft Spatializer 外掛程式會處理未經處理的音訊路徑,所以 [SFX Reverb] (SFX 殘響) 只會用來處理經過處理的音訊路徑。 在 [SFX 殘響] 的 [偵測器] 窗格中:
- 將 [未經處理等級] 屬性設為最低設定 (-10000 mB)。
- 將 [會議室] 屬性設定為最高設定 (0 mB)。
其他設定可控制模擬會議室的風格。 Decay Time (衰減時間) 與感知到的會議室大小特別相關。
播放影片時實現殘響
返回 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 群組] 屬性設定為 Master 混音器群組。