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

Effectué

Dans cette unité, vous allez apprendre à activer et désactiver la spatialisation au moment de l’exécution et à tester la spatialisation 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 Projet et choisissez Créer> unscript C# pour créer un script C#. Entrez un nom approprié pour le script ; par exemple , SpatializeOnOff.

    Capture d’écran de la création d’un script.

  2. Double-cliquez sur le script dans la fenêtre Projet pour l’ouvrir dans Visual Studio. Remplacez le contenu du script par défaut par les éléments suivants :

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

    Remarque

    Pour activer ou désactiver la spatialisation, le script ajuste uniquement la propriété spatialBlend , laissant la propriété spatialization activée. Dans ce mode, Unity applique toujours la courbe volume . Sinon, si l’utilisateur devait désactiver la spatialisation lorsqu’il est loin de la source, il entendrait que le volume augmente brusquement.

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

Attacher votre script et le piloter à partir du bouton

  1. Sélectionnez Quad dans la hiérarchie. Dans la fenêtre Inspector, utilisez le bouton Ajouter un composant pour ajouter SpatializeOnOff(Script)

    Capture d’écran de l’ajout d’un script à quad.

  2. Dans la fenêtre Hierarchy, recherchez PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Lorsque l’objet Quad est toujours sélectionné dans la hiérarchie, dans la fenêtre Inspecteur, recherchez le composant Spatialize On Off (Script) et faites glisser et déposez le composant TextLabelUnder vers le champ Objet de texte bouton .

    Capture d’écran de la recherche de l’objet Quad dans la hiérarchie, avec le composant SpatialierOnOff.

  3. Pour définir le bouton pour appeler le script SpatializeOnOff lorsque le bouton est libéré, vous devez configurer un script interagissant. Dans la fenêtre Hiérarchie, sélectionnez le PressableButton_32x32mm_IconAndTextUnder. Dans la fenêtre Inspector, recherchez le composant Bouton appuyable 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, cliquez et faites glisser l’objet Quad de la fenêtre Hierarchy dans le champ None (Object) vide de l’événement que vous venez d’ajouter pour que l’objet ButtonParent écoute l’événement de clic de bouton à partir de ce bouton.

    2. Sélectionnez la liste déroulante No Function , puis sélectionnez SpatializeOnOff>SwapSpatialization () pour activer et désactiver l’audio spatial.

    Capture d’écran des paramètres d’action bouton.