Exercice : Activer et désactiver la spatialisation au moment de l’exécution

Effectué

Dans cette leçon, vous apprenez à activer et désactiver la spatialisation au moment de l’exécution, et à la tester dans l’éditeur Unity et HoloLens 2.

Ajouter un script de contrôle de spatialisation

  1. Cliquez avec le bouton droit dans la fenêtre Project et choisissez Create>C# Script pour créer un script C#. Entrez un nom approprié pour le script, comme SpatializeOnOff.

    Screenshot of creating a script.

  2. Double-cliquez sur le script dans la fenêtre Project pour l’ouvrir dans Visual Studio. Remplacez le contenu du script par défaut par ce qui suit :

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

    Notes

    Pour activer ou désactiver la spatialisation, le script ajuste uniquement la propriété spatialBlend, et laisse la propriété spatialization activée. Dans ce mode, Unity applique toujours la courbe de Volume. Sinon, si l’utilisateur devait désactiver la spatialisation lorsqu’il se trouve loin de la source, il constaterait une augmentation soudaine du volume.

    Si vous préférez désactiver complètement la spatialisation, modifiez le script pour ajuster également la propriété booléenne Spatialization de la variable SourceObject.

Attacher votre script et le piloter à partir du bouton

  1. Sélectionnez Quad dans Hierarchy. Dans la fenêtre Inspector, utilisez le bouton Add Component pour ajouter SpatializeOnOff(Script)

    Screenshot of Add script to quad.

  2. Dans la fenêtre Hierarchy, trouvez PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Toujours avec l’objet Quad sélectionné dans Hierarchy, recherchez le composant Spatialize On Off (Script) dans la fenêtre Inspector et faites glisser le composant TextLabelUnder vers le champ Button Text Object.

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

  3. Pour définir le bouton afin qu’il appelle le script SpatializeOnOff quand il est sollicité, vous devez configurer un script avec lequel interagir. Dans la fenêtre Hierarchy, sélectionnez PressableButton_32x32mm_IconAndTextUnder. Dans la fenêtre Inspector, trouvez le composant Pressable Button et sélectionnez l’icône + sous l’événement OnClicked ().

    1. Avec l’objet PressableButton_32x32mm_IconAndTextUnder toujours sélectionné dans la fenêtre Hierarchy, faites glisser l’objet Quad de la fenêtre Hierarchy vers le champ vide None (Object) de l’événement que vous venez d’ajouter afin que l’objet ButtonParent attende l’événement de clic provenant de ce bouton.

    2. Sélectionnez ensuite le menu déroulant No Function, puis sélectionnez SpatializeOnOff>SwapSpatialization () pour activer et désactiver l’audio spatial.

    Screenshot of Button action settings.