Övning – Aktivera och inaktivera spatialisering vid körning

Slutförd

I den här lektionen får du lära dig hur du aktiverar och inaktiverar spatialisering vid körning och testar spatialisering i Unity-redigeraren och HoloLens 2.

Lägga till spatialiseringskontrollskript

  1. Högerklicka i projektfönstret och välj Skapa>C#-skript för att skapa ett nytt C#-skript. Ange ett lämpligt namn för skriptet. till exempel SpatializeOnOff.

    Screenshot of creating a script.

  2. Dubbelklicka på skriptet i projektfönstret för att öppna det i Visual Studio. Ersätt standardskriptinnehållet med följande:

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

    Kommentar

    Om du vill aktivera eller inaktivera spatialiseringen justerar skriptet endast egenskapen spatialBlend, vilket gör att spatialiseringsegenskapen är aktiverad. I det här läget tillämpar Unity fortfarande volymkurvan . Annars, om användaren skulle inaktivera spatialisering när långt från källan, skulle de höra volymen öka plötsligt.

    Om du föredrar att helt inaktivera spatialisering ändrar du skriptet så att det även justerar sourceObject-variabelns spatialiserings booleska egenskap.

Koppla skriptet och kör det från knappen

  1. Välj Quad i hierarkin. I fönstret Inspector (Kontroll) använder du knappen Lägg till komponent för att lägga till SpatializeOnOff(Script)

    Screenshot of Add script to quad.

  2. Leta upp PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder i hierarkifönstret. Med Quad-objektet fortfarande markerat i hierarkin letar du upp komponenten Spatialize On Off (Script) i fönstret Inspector och drar och släpper TextLabelUnder komponenten till fältet Knapptextobjekt.

    Screenshot of finding the Quad object in the hierarchy, with the SpatialierOnOff component.

  3. Om du vill ställa in knappen för att anropa SpatializeOnOff-skriptet när knappen släpps måste du konfigurera interaktionsbart skript. I fönstret Hierarki väljer du PressableButton_32x32mm_IconAndTextUnder. Leta upp komponenten Pressable Button i fönstret Inspector (Kontroll) och välj + ikonen under händelsen OnClicked ().

    1. Med det PressableButton_32x32mm_IconAndTextUnder objektet fortfarande markerat i hierarkifönstret klickar du på och drar Quad-objektet från hierarkifönstret till det tomma fältet Ingen (objekt) för händelsen som du just lade till för att få ButtonParent-objektet att lyssna efter knappklickshändelse från den här knappen.

    2. Välj listrutan Ingen funktion och välj sedan SpatializeOnOff>SwapSpatialization () för att aktivera och inaktivera det rumsliga ljudet.

    Screenshot of Button action settings.