Øvelse – aktivér og deaktiver rumliggørelse på kørselstidspunktet

Fuldført

I dette undermodul lærer du, hvordan du aktiverer og deaktiverer spatialisering på kørselstidspunktet og tester afstandsinddeling i Unity-editoren og HoloLens 2.

Tilføj script til styring af afstand

  1. Højreklik i vinduet Project, og vælg Opret>C#-script for at oprette et nyt C#-script. Angiv et passende navn til scriptet. SpatializeOnOff.

    Skærmbillede af oprettelse af et script.

  2. Dobbeltklik på scriptet i project-vinduet for at åbne det i Visual Studio. Erstat standardscriptindholdet med følgende:

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

    Seddel

    Hvis du vil aktivere eller deaktivere spatialiseringen, justerer scriptet kun egenskaben spatialBlend, så egenskaben spatialization er aktiveret. I denne tilstand anvender Unity stadig Volume-kurven. Ellers hvis brugeren deaktiverer rumlægning, når den er langt fra kilden, vil vedkommende høre, at lydstyrken stiger brat.

    Hvis du foretrækker at deaktivere spatialisering fuldt ud, skal du ændre scriptet for også at justere SourceObject variablens Spatialization boolesk egenskab.

Vedhæft dit script, og kør det fra knappen

  1. Vælg Quad- i hierarkiet. I vinduet Fremviser skal du bruge knappen Tilføj komponent til at tilføje SpatializeOnOff(Script)

    Skærmbillede af Føj script til quad.

  2. Find PressableButton_32x32mm_IconAndTextUnder>TextLabelUnderi vinduet Hierarki. Mens det quad--objekt stadig er markeret i hierarkiet, skal du i vinduet Fremviser finde komponenten Spatialize Til Fra (Script) og trække og slippe TextLabelUnder komponent til feltet knaptekstobjekt.

    Skærmbillede af at finde Quad-objektet i hierarkiet med komponenten SpatialierOnOff.

  3. Hvis du vil angive knappen til at kalde scriptet SpatializeOnOff, når knappen slippes, skal du konfigurere script, der kan interageres med. Vælg PressableButton_32x32mm_IconAndTextUnderi vinduet Hierarki. I vinduet Fremviser skal du finde komponenten knap, der kan trykkes på, og vælge ikonet + under hændelsen VedKliket ().

    1. Mens det PressableButton_32x32mm_IconAndTextUnder objekt stadig er markeret i vinduet Hierarki, skal du klikke og trække objektet Quad fra vinduet Hierarki til det tomme Ingen (objekt) felt for den hændelse, du lige har tilføjet, for at få buttonParent-objektet til at lytte efter knap klikhændelse fra denne knap.

    2. Vælg rullelisten Ingen funktion, og vælg derefter SpatializeOnOff>SwapSpatialization () for at slå den rumlige lyd til og fra.

    Skærmbillede af indstillinger for knaphandling.