Ćwiczenie — włączanie i wyłączanie przestrzennych w czasie wykonywania

Ukończone

W tym module dowiesz się, jak włączyć i wyłączyć przestrzenność w czasie wykonywania i przetestować je w edytorze aparatu Unity i HoloLens 2.

Dodawanie skryptu kontrolki przestrzennej

  1. Kliknij prawym przyciskiem myszy w oknie Project i wybierz pozycję CreateC# Script (Utwórz> skrypt języka C#), aby utworzyć nowy skrypt w języku C#, wprowadź odpowiednią nazwę skryptu, na przykład SpatializeOnOff:

    Screenshot of Create script.

  2. Kliknij dwukrotnie skrypt w oknie Project, aby otworzyć go w 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;
        }
    }
    

    Uwaga

    Aby włączyć lub wyłączyć przestrzenność, skrypt dostosowuje tylko właściwość spatialBlend , pozostawiając właściwość przestrzenną włączoną. W tym trybie aparat Unity nadal stosuje krzywą woluminu . W przeciwnym razie, jeśli użytkownik miał wyłączyć przestrzenność, gdy jest daleko od źródła, nagle usłyszy wzrost woluminu. Jeśli wolisz całkowicie wyłączyć przestrzenność, zmodyfikuj skrypt, aby również dostosować właściwość logiczną przestrzenną zmiennej SourceObject .

Dołącz skrypt i wyjmij go z przycisku

  1. Wybierz pozycję Czworokąt w hierarchii, a następnie w oknie Inspector (Inspektor) użyj przycisku Dodaj składnik, aby dodać element SpatializeOnOff(Script)

    Screenshot of Add script to quad.

  2. W hierarchii znajdź pozycję PressableButtonHoloLens2IconAndTextMeshPro>>.

  3. Po wybraniu obiektu Quad w hierarchii w oknie Inspector (Inspektor) znajdź składnik Spatialize On Off (Script) i Przeciągnij i upuść składnik TextMeshPro elementu PressableButtonHoloLens2.

    Screenshot of Find the PressableButtonHoloLens2 object in the hierarchy.

  4. Aby ustawić przycisk w celu wywołania skryptu SpatializeOnOff po zwolnieniu przycisku Należy skonfigurować skrypt umożliwiający interakcję.

  5. W oknie Hierarchy (Hierarchia) wybierz pozycję PressableButtonHoloLens2. W oknie Inspector (Inspektor) znajdź składnik Interactable (Script) i kliknij ikonę + w obszarze Zdarzenie OnClick ().

    1. Po wybraniu obiektu PressableButtonHoloLens2 w oknie Hierarchy (Hierarchia) kliknij i przeciągnij obiekt Quad (Czworokąt ) z okna Hierarchy (Hierarchia) do pustego pola None (Object) zdarzenia, które zostało właśnie dodane, aby obiekt ButtonParent nasłuchiwał przycisku, klikając zdarzenie przycisku z tego przycisku:

    2. Kliknij listę rozwijaną No Function (Brak funkcji ) tego samego zdarzenia. Następnie wybierz pozycję SpatializeOnOffSwapSpatialization>(), aby włączyć i wyłączyć dźwięk przestrzenny

    Screenshot of Button action settings.