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 C#-script maken>om een nieuw C#-script te maken. Voer een geschikte naam in voor het script; Bijvoorbeeld SpatializeOnOff.

    Screenshot of creating a 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 spatialisatie is ingeschakeld. In deze modus past Unity nog steeds de volumecurve toe. Als de gebruiker anders ruimtelijke instellingen zou uitschakelen wanneer deze ver van de bron afkomt, zou het volume plotseling toenemen.

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

Voeg uw script toe en geef het aan vanaf de knop

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

    Screenshot of Add script to quad.

  2. Zoek in het venster Hierarchy PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Als het quad-object nog steeds is geselecteerd in de hiërarchie, zoekt u in het venster Inspector het onderdeel Spatialize On Off (Script) en sleept u het onderdeel TextLabelUnder naar het veld Knoptekstobject .

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

  3. Als u de knop wilt instellen om het 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 onderdeel Drukbare knop en selecteer het + pictogram onder de gebeurtenis OnClicked ().

    1. Terwijl het PressableButton_32x32mm_IconAndTextUnder object nog steeds is geselecteerd in het venster Hierarchy, klikt u op het Quad-object uit het venster Hierarchy naar het lege veld None (Object) van de gebeurtenis die u zojuist hebt toegevoegd om ervoor te zorgen dat het ButtonParent-object luistert naar knopklikgebeurtenis vanaf deze knop.

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

    Screenshot of Button action settings.