Exercice : Activer et désactiver la spatialisation au moment de l’exécution
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
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.
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
Sélectionnez Quad dans la hiérarchie. Dans la fenêtre Inspector, utilisez le bouton Ajouter un composant pour ajouter SpatializeOnOff(Script)
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 .
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 ().
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.
Sélectionnez la liste déroulante No Function , puis sélectionnez SpatializeOnOff>SwapSpatialization () pour activer et désactiver l’audio spatial.