Cvičení – povolení a zakázání prostorovosti v době běhu

Dokončeno

cs-CZ: V této lekci se naučíte, jak za běhu povolit a zakázat prostorovou funkci v editoru Unity a HoloLens 2 a jak otestovat tuto funkci.

Přidání skriptu pro prostorové řízení

  1. Klikněte pravým tlačítkem do okna Projekt a zvolte Vytvořit>skript jazyka C# a vytvořte nový skript jazyka C#. Zadejte vhodný název skriptu; například SpatializeOnOff.

    snímek obrazovky s vytvořením skriptu

  2. Poklikáním na skript v okně Projekt ho otevřete ve Visual Studio. Nahraďte výchozí obsah skriptu následujícím kódem:

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

    Poznámka

    Chcete-li povolit nebo zakázat prostorovou úpravu, skript upraví pouze vlastnost spatialBlend, přitom ponechá vlastnost prostorovou povolenou. V tomto režimu Unity stále používá křivku Volume. Jinak, pokud by uživatel zakázal prostorovou funkci, když je daleko od zdroje, uslyší náhlé zvýšení hlasitosti.

    Pokud dáváte přednost úplnému zakázání prostorové úpravy, upravte skript tak, aby také byla upravena booleovská vlastnost SourceObject proměnné Spatialization.

Připojte skript a spusťte ho z tlačítka.

  1. V hierarchii vyberte Quad. V okně inspektoru použijte tlačítko Přidat komponentu k přidání SpatializeOnOff(Script).

    snímek obrazovky s možností Přidat skript do čtyřúhelníku

  2. V okně Hierarchie vyhledejte PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Pokud je objekt Quad stále vybraný v hierarchii, v okně inspektoru vyhledejte komponentu Spatialize On Off (Script) a přetáhněte komponentu TextLabelUnder do pole Button Text Object.

    snímek obrazovky zachycující vyhledání objektu Quad v hierarchii s komponentou SpatialierOnOff

  3. Chcete-li nastavit tlačítko pro volání skriptu SpatializeOnOff po uvolnění tlačítka, musíte nakonfigurovat skript interakce. V okně Hierarchie vyberte PressableButton_32x32mm_IconAndTextUnder. V okně inspektoru vyhledejte komponentu stisknutelným tlačítkem a vyberte ikonu + pod událostí OnClicked ().

    1. Pokud je objekt PressableButton_32x32mm_IconAndTextUnder stále vybraný v okně Hierarchie, klikněte a přetáhněte objekt Quad z okna Hierarchie do prázdného pole None (Object) události, kterou jste právě přidali, aby objekt ButtonParent naslouchal události kliknutím na tlačítko z tohoto tlačítka.

    2. Vyberte rozevírací seznam Bez funkce a poté vyberte SpatializeOnOff>SwapSpatialization () pro zapnutí a vypnutí prostorového zvuku.

    Snímek obrazovky s nastavením akce tlačítka