Ejercicio: Habilitación y deshabilitación de la espacialización en tiempo de ejecución

Completado

En esta unidad, aprenderá a habilitar y deshabilitar la espacialización en el entorno de ejecución y a probarla en el editor de Unity y en HoloLens 2.

Adición de un script de control de la espacialización

  1. Haga clic con el botón derecho en la ventana Proyecto y elija Create>C# Script para crear uno nuevo. Escriba un nombre adecuado para el script; por ejemplo, SpatializeOnOff.

    Screenshot of creating a script.

  2. Haga doble clic en el script en la ventana Proyecto para abrirlo en Visual Studio. Reemplace el contenido predeterminado del script por lo siguiente:

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

    Nota:

    Para habilitar o deshabilitar la espacialización, el script solo ajusta la propiedad spatialBlend y deja habilitada la propiedad spatialization. En este modo, Unity sigue aplicando la curva de volumen. De lo contrario, si el usuario deshabilitara la espacialización al encontrarse lejos del origen, escucharía un aumento brusco del volumen.

    Si prefiere deshabilitar completamente la espacialización, modifique el script para que también ajuste la propiedad booleana Spatialization de la variable SourceObject.

Incorporación del script y generación mediante el botón

  1. Seleccione Quad en Hierarchy. En la ventana Inspector, utilice el botón Agregar componente para agregar SpatializeOnOff(Script).

    Screenshot of Add script to quad.

  2. En la ventana Hierarchy, busque PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Con el objeto Quad aún seleccionado en Hierarchy, en la ventana Inspector, busque el componente Spatialize On Off (Script) y arrastre y coloque el componente TextLabelUnder en el campo Button Text Object.

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

  3. Para establecer el botón para que llame al script SpatializeOnOff al liberarlo, debe establecer que el script permita la interacción. En la ventana Jerarquía, seleccione el objeto PressableButton_32x32mm_IconAndTextUnder. En la ventana Inspector, busque el componente Pressable Button y seleccione el icono + en el evento OnClicked ().

    1. Con el objeto PressableButton_32x32mm_IconAndTextUnder aún seleccionado en la ventana Hierarchy, haga clic y arrastre el objeto Quad desde la ventana Hierarchy al campo vacío None (Object) del evento que acaba de agregar para que el objeto ButtonParent escuche el evento de clic de botón de este botón.

    2. Seleccione la lista desplegable No Function y, a continuación, seleccione SpatializeOnOff>SwapSpatialization () para activar y desactivar el audio espacial.

    Screenshot of Button action settings.