練習 - 在執行階段時啟用和停用空間化

已完成

在本單元中,您將瞭解如何在運行時間啟用和停用空間化,並在 Unity 編輯器和 HoloLens 2 中測試空間化。

新增空間化控件腳本

  1. 在 [專案] 視窗中按兩下滑鼠右鍵,然後選擇 [ 建立>C# 腳本 ] 以建立新的 C# 腳本。 輸入文本的適當名稱;例如 SpatializeOnOff

    建立腳本的螢幕快照。

  2. 按兩下 [專案] 視窗中的腳本,以在Visual Studio 中開啟它。 以下欄內容取代預設文稿內容:

    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;
        }
    }
    

    備註

    若要啟用或停用空間化,腳本只會調整 spatialBlend 屬性,讓 空間化 屬性保持啟用。 在此模式中,Unity 仍會套用 磁碟區 曲線。 否則,如果使用者在遠離來源時停用空間化,他們就會突然聽到音量增加。

    如果您想要完全停用空間化,請修改腳本,同時調整 SourceObject 變數的 Spatialization 布爾值屬性。

連結您的文稿,並從按鈕加以驅動

  1. 在 [階層] 中選取 [四邊形 ]。 在 [偵測器] 視窗中,使用 [ 新增元件 ] 按鈕來新增 SpatializeOnOff(腳本)

    將腳本新增至四邊形的螢幕快照。

  2. 在 [階層] 視窗中,找出 PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder。 在 [階層] 中仍選取 [四邊形 ] 對象之後,在 [偵測器] 視窗中,找出 [空間化關閉] 元件 [腳本] 元件,然後將 TextLabelUnder 元件拖放到 [按鈕文字物件] 字段。

    使用 SpatialierOnOff 元件在階層中尋找 Quad 物件的螢幕快照。

  3. 若要在釋放按鈕時設定按鈕來呼叫 SpatializeOnOff 腳本,您需要設定可互動的腳本。 在 [階層] 視窗中,選取 PressableButton_32x32mm_IconAndTextUnder。 在 [偵測器] 視窗中,找出 [可按下的按鈕 ] 元件,然後選取 +OnClicked () 事件下的圖示。

    1. 在 [階層] 視窗中仍然選取 PressableButton_32x32mm_IconAndTextUnder 物件時,按兩下 [階層] 視窗中的 [四邊 形] 物件,並將其拖曳到您剛才新增之事件的空白 [ 無](Object) 字段中,讓 ButtonParent 物件接聽來自此按鈕的 button Click 事件。

    2. 選取 [ 無函式 ] 下拉式列表,然後選取 [SpatializeOnOff>SwapSpatialization ], 以開啟和關閉空間音訊。

    按鈕動作設定的螢幕快照。