Esercizio - Abilitare e disabilitare la spazializzazione in fase di esecuzione

Completato

In questa unità si apprenderà come abilitare e disabilitare la spazializzazione in fase di esecuzione e testare la spazializzazione nell'editor di Unity e in HoloLens 2.

Aggiungere uno script di controllo di spazializzazione

  1. Fare clic con il pulsante destro del mouse nella finestra Progetto e scegliere Crea>script C# per creare un nuovo script C#. Immettere un nome appropriato per lo script; Ad esempio, SpatializeOnOff.

    Screenshot della creazione di uno script.

  2. Fare doppio clic sullo script nella finestra Progetto per aprirlo in Visual Studio. Sostituire il contenuto dello script predefinito con quanto segue:

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

    Annotazioni

    Per abilitare o disabilitare la spazializzazione, lo script regola solo la proprietà spatialBlend , lasciando abilitata la proprietà spatialization . In questa modalità Unity applica comunque la curva volume . In caso contrario, se l'utente dovesse disabilitare la spazializzazione quando lontano dall'origine, il volume aumenterebbe bruscamente.

    Se si preferisce disabilitare completamente la spazializzazione, modificare lo script per regolare anche la proprietà booleana di spatializzazione della variabile SourceObject.

Collegare lo script ed eseguirlo dal pulsante

  1. Selezionare Quad nella gerarchia. Nella finestra Inspector (Controllo) usare il pulsante Aggiungi componente per aggiungere SpatializeOnOff(Script)

    Screenshot dell'opzione Aggiungi script a quad.

  2. Nella finestra Hierarchy (Gerarchia) individuare PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Con l'oggetto Quad ancora selezionato nella gerarchia, nella finestra Inspector trovare il componente Spatialize On Off (Script) e trascinare e rilasciare il componente TextLabelUnder nel campo Button Text Object.

    Screenshot della ricerca dell'oggetto Quad nella gerarchia con il componente SpatialierOnOff.

  3. Per impostare il pulsante per eseguire lo script SpatializeOnOff quando il pulsante viene rilasciato, è necessario configurare lo script interattivo. Nella finestra Hierarchy (Gerarchia) selezionare il PressableButton_32x32mm_IconAndTextUnder. Nella finestra dell'Ispettore, individuare il componente Pressable Button e selezionare l'icona + sotto l'evento OnClicked().

    1. Con l'oggetto PressableButton_32x32mm_IconAndTextUnder ancora selezionato nella finestra Hierarchy, fare clic e trascinare l'oggetto Quad dalla finestra Hierarchy nel campo None (Object) vuoto dell'evento appena aggiunto per fare in modo che l'oggetto ButtonParent rimanga in ascolto dell'evento clic del pulsante attivato a partire da questo pulsante.

    2. Selezionare l'elenco a discesa No Function, quindi selezionare SpatializeOnOff>SwapSpatialization () per attivare e disattivare l'audio spaziale.

    Screenshot delle impostazioni dell'azione del pulsante.