Övning – Aktivera och inaktivera spatialisering vid körning
I den här enheten får du lära dig hur du aktiverar och inaktiverar spatialisering vid runtime 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; } }Anteckning
Om du vill aktivera eller inaktivera spatialiseringen, justerar skriptet endast egenskapen spatialBlend, och lämnar egenskapen spatialisering aktiverad. I det här läget använder Unity fortfarande kurvan Volume. 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 Spatialization boolesk egenskap.
Koppla skriptet och kör det från knappen
Välj Quad i hierarkin. I fönstret Inspector använder du knappen Lägg till komponent för att lägga till SpatializeOnOff(Script)
I hierarkifönstret, leta upp PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Med objektet Quad fortfarande markerat i hierarkin ska du leta upp komponenten Spatialize On Off (Script) i fönstret Inspector och dra och släppa komponenten TextLabelUnder till fältet Knapptextobjekt.
Om du vill ange knappen för att anropa skriptet SpatializeOnOff när knappen släpps måste du konfigurera interaktionsbart skript. I Hierarki-fönstret väljer du PressableButton_32x32mm_IconAndTextUnder. Leta upp komponenten Pressable Button i inspector-fönstret och välj ikonen + under händelsen OnClicked ().
Med objektet PressableButton_32x32mm_IconAndTextUnder fortfarande markerat i Hierarkifönstret, klicka och dra objektet Quad från Hierarkifönstret till det tomma Inget (objekt)-fältet hos den händelse du just lade till, för att få ButtonParent-objektet att lyssna på knappklickshändelser från denna knapp.
Välj listrutan Ingen funktion och välj sedan SpatializeOnOff>SwapSpatialization () för att aktivera och inaktivera det rumsliga ljudet.