Ćwiczenie — włączanie i wyłączanie przestrzennego dźwięku podczas działania programu
W tej jednostce dowiesz się, jak włączyć i wyłączyć przestrzenność w czasie działania oraz przetestować przestrzenność w edytorze Unity i na urządzeniu HoloLens 2.
Dodawanie skryptu kontrolki przestrzennej
Kliknij prawym przyciskiem myszy okno Project (Projekt) i wybierz pozycję Create>C# Script (Utwórz skrypt języka C#), aby utworzyć nowy skrypt języka C#. Wprowadź odpowiednią nazwę skryptu; na przykład SpatializeOnOff.
Kliknij dwukrotnie skrypt w oknie Projekt, aby otworzyć go w programie Visual Studio. Zastąp domyślną zawartość skryptu następującym kodem:
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; } }
Notatka
Aby włączyć lub wyłączyć spatializację, skrypt dostosowuje tylko właściwość spatialBlend, pozostawiając właściwość spatialization włączoną. W tym trybie Unity nadal stosuje krzywą woluminu . W przeciwnym razie, jeśli użytkownik wyłączy przestrzenność, będąc daleko od źródła, nagle usłyszy zwiększenie głośności.
Jeśli wolisz całkowicie wyłączyć spacjalizację, zmodyfikuj skrypt, aby również dostosować właściwość logiczną SourceObject zmiennej Spatialization.
Dołącz skrypt i uruchom go za pomocą przycisku
Wybierz Quad w Hierarchii. W oknie Inspector (Inspektor) użyj przycisku Dodaj element, aby dodać SpatializeOnOff(Script)
W oknie Hierarchia (Hierarchy) znajdź PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Gdy obiekt Quad jest nadal zaznaczony w Hierarchii, w oknie Inspektor znajdź komponent Spatialize On Off (Script) i przeciągnij oraz upuść komponent TextLabelUnder do pola Button Text Object.
Aby ustawić przycisk w celu wywołania skryptu SpatializeOnOff po zwolnieniu przycisku, należy skonfigurować skrypt umożliwiający interakcję. W oknie Hierarchia wybierz PressableButton_32x32mm_IconAndTextUnder. W oknie Inspektora znajdź składnik Pressable Button i wybierz ikonę + pod zdarzeniem OnClicked ().
Po wybraniu obiektu PressableButton_32x32mm_IconAndTextUnder w oknie Hierarchii, kliknij i przeciągnij obiekt Czworokąt z okna Hierarchii do pustego None (Obiekt) pola zdarzenia, które właśnie dodano, aby obiekt ButtonParent nasłuchiwał zdarzenia kliknięcia przycisku z tego przycisku.
Wybierz listę rozwijaną Brak funkcji, a następnie wybierz SpatializeOnOff>SwapSpatialization (), aby włączyć i wyłączyć dźwięk przestrzenny.