Övning – Aktivera och inaktivera spatialisering vid körning
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
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.
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
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)
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.
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 ().
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.
Välj listrutan Ingen funktion och välj sedan SpatializeOnOff>SwapSpatialization () för att aktivera och inaktivera det rumsliga ljudet.