練習 - 在執行階段時啟用和停用空間化
在本單元中,您將了解如何在執行階段時啟用和停用空間化並在 Unity 編輯器和 HoloLens 2 中測試空間化。
新增空間化控制指令碼
以滑鼠右鍵按一下 [專案] 視窗,然後選擇 [建立]>[C# 指令碼] 以建立新的 C# 指令碼。 輸入指令碼的適當名稱;例如 SpatializeOnOff。
按兩下 [專案] 視窗中的指令碼,以在 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 屬性並將 spatialization 屬性保持啟用。 在本課程模組中,Unity 仍會套用 Volume (音量) 曲線。 否則,如果使用者在遠離來源時停用空間化,則就會突然聽到音量變大。
如果您偏好完全停用空間化,請修改指令碼並同時調整 SourceObject 變數的空間化布林值屬性。
附加指令碼並透過按鈕進行驅動
在 [階層] 中選取 [四邊形]。 在 [偵測器] 視窗中,使用 [新增元件] 按鈕來新增 SpatializeOnOff(Script)
在 [階層] 視窗中,找出 PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder。 在 [階層] 中仍保持選取 [四邊形] 物件時,在 [偵測器] 視窗中找出 SpatializeOnOff(Script) 元件,然後將 TextLabelUnder 元件拖放至 [按鈕文字物件] 欄位。
若要在放開按鈕時,將按鈕設定為呼叫 SpatializeOnOff 指令碼,則您必須設定可互動的指令碼。 在 [階層] 視窗中,選取 [PressableButton_32x32mm_IconAndTextUnder]。 在 [偵測器] 視窗中,找出 Pressable Button 元件並選取 OnClick () 事件下的 + 圖示。
在 [階層] 視窗中仍保持選取 [PressableButton_32x32mm_IconAndTextUnder] 物件時,將 [四邊形] 物件從 [階層] 視窗按住並拖曳至剛才所新增事件的空白 [無 (物件)] 欄位,讓 ButtonParent 物件可以從此按鈕接聽按鈕點擊事件。
選取 [無函式] 下拉式列表,然後選取 [SpatializeOnOff]>[SwapSpatialization ()],以開啟和關閉空間音訊。