練習 - 在執行階段時啟用和停用空間化
在本單元中,您將瞭解如何在運行時間啟用和停用空間化,並在 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 屬性,讓 空間化 屬性保持啟用。 在此模式中,Unity 仍會套用 磁碟區 曲線。 否則,如果使用者在遠離來源時停用空間化,他們就會突然聽到音量增加。
如果您想要完全停用空間化,請修改腳本,同時調整 SourceObject 變數的 Spatialization 布爾值屬性。
連結您的文稿,並從按鈕加以驅動
在 [階層] 中選取 [四邊形 ]。 在 [偵測器] 視窗中,使用 [ 新增元件 ] 按鈕來新增 SpatializeOnOff(腳本)
在 [階層] 視窗中,找出 PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder。 在 [階層] 中仍選取 [四邊形 ] 對象之後,在 [偵測器] 視窗中,找出 [空間化關閉] 元件 [腳本] 元件,然後將 TextLabelUnder 元件拖放到 [按鈕文字物件] 字段。
若要在釋放按鈕時設定按鈕來呼叫 SpatializeOnOff 腳本,您需要設定可互動的腳本。 在 [階層] 視窗中,選取 PressableButton_32x32mm_IconAndTextUnder。 在 [偵測器] 視窗中,找出 [可按下的按鈕 ] 元件,然後選取 +OnClicked () 事件下的圖示。
在 [階層] 視窗中仍然選取 PressableButton_32x32mm_IconAndTextUnder 物件時,按兩下 [階層] 視窗中的 [四邊 形] 物件,並將其拖曳到您剛才新增之事件的空白 [ 無](Object) 字段中,讓 ButtonParent 物件接聽來自此按鈕的 button Click 事件。
選取 [ 無函式 ] 下拉式列表,然後選取 [SpatializeOnOff>SwapSpatialization ], 以開啟和關閉空間音訊。