Oefening: ruimtelijke ordening tijdens runtime in- en uitschakelen

Voltooid

In deze les leert u hoe u ruimtelijke ordening tijdens runtime inschakelt en uitschakelt en ruimtelijke ordening test in de Unity-editor en HoloLens 2.

Script voor ruimtelijk beheer toevoegen

  1. Klik met de rechtermuisknop in het venster Project en kies Maken>C#-script om een nieuw C#-script te maken. Voer een geschikte naam in voor het script; bijvoorbeeld SpatializeOnOff.

    schermopname van het maken van een script.

  2. Dubbelklik op het script in het projectvenster om het te openen in Visual Studio. Vervang de standaardscriptinhoud door het volgende:

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

    Notitie

    Als u de ruimtelijke ordening wilt in- of uitschakelen, past het script alleen de eigenschap spatialBlend aan, waardoor de eigenschap ruimtelijke ordening ingeschakeld blijft. In deze modus past Unity nog steeds de Volume curve toe. Anders, als de gebruiker de ruimtelijke ervaring uitschakelt wanneer hij ver van de bron verwijderd is, zou het volume plotseling toenemen.

    Als u de ruimtelijkheid liever volledig uitschakelt, wijzigt u het script om ook de eigenschap SourceObject variabele Spatialization booleaanse eigenschap aan te passen.

Voeg uw script toe en bestuur het met de knop

  1. Selecteer Quad- in de hiërarchie. Gebruik in het Inspector-venster de knop Component toevoegen om SpatializeOnOff(Script) toe te voegen

    schermopname van script toevoegen aan quad.

  2. Zoek in het Hierarchie-venster naar PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Als het Quad--object nog steeds geselecteerd is in de hiërarchie, zoekt u in het Inspector-venster de component Spatialize On Off (Script) en sleept u de component TextLabelUnder naar het veld voor de knoptekst Button Text Object.

    Schermopname van het vinden van het Quad-object in de hiërarchie, met het onderdeel SpatialierOnOff.

  3. Als u de knop wilt instellen om de SpatializeOnOff script aan te roepen wanneer de knop wordt vrijgegeven, moet u een interactief script configureren. Selecteer in het venster Hiërarchie de PressableButton_32x32mm_IconAndTextUnder. Zoek in het venster Inspector het Pressable Button-component en selecteer het +-pictogram bij de gebeurtenis OnClicked ().

    1. Terwijl het PressableButton_32x32mm_IconAndTextUnder-object nog steeds geselecteerd is in het Hierarchy-venster, klikt en sleept u het Quad-object uit het Hierarchy-venster naar het lege veld None (Object) van de gebeurtenis die u zojuist hebt toegevoegd, om het ButtonParent-object te laten luisteren naar de knopklikgebeurtenis van deze knop.

    2. Selecteer de vervolgkeuzelijst Geen functie en selecteer vervolgens SpatializeOnOff>SwapSpatialization () om de ruimtelijke audio in en uit te schakelen.

    Schermopname van knopactie-instellingen.