Übung – Aktivieren und Deaktivieren der Raumisierung zur Laufzeit

Abgeschlossen

In dieser Lektion erfahren Sie, wie Sie die Raumisierung zur Laufzeit aktivieren und deaktivieren und die Raumordnung im Unity-Editor und holoLens 2 testen.

Hinzufügen eines Raumisierungssteuerelementskripts

  1. Klicken Sie im Projektfenster mit der rechten Maustaste, und wählen Sie> "C#-Skript erstellen" aus, um ein neues C#-Skript zu erstellen. Geben Sie einen geeigneten Namen für das Skript ein; Beispiel: SpatializeOnOff.

    Screenshot des Erstellens eines Skripts.

  2. Doppelklicken Sie im Projektfenster auf das Skript, um es in Visual Studio zu öffnen. Ersetzen Sie den Standardskriptinhalt durch Folgendes:

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

    Hinweis

    Um die Raumordnung zu aktivieren oder zu deaktivieren, passt das Skript nur die spatialBlend-Eigenschaft an, sodass die Spatialization-Eigenschaft aktiviert ist. In diesem Modus wendet Unity weiterhin die Lautstärkekurve an. Andernfalls würde der Benutzer die Raumisierung deaktivieren, wenn er weit von der Quelle entfernt war, die Lautstärke plötzlich erhöht.

    Wenn Sie die Raumordnung vollständig deaktivieren möchten, ändern Sie das Skript, um auch die boolean-Eigenschaft der Spatialization-Variable der SourceObject-Variable anzupassen.

Fügen Sie Ihr Skript an, und fahren Sie es über die Schaltfläche

  1. Wählen Sie "Quad " in der Hierarchie aus. Verwenden Sie im Inspektorfenster die Schaltfläche " Komponente hinzufügen ", um SpatializeOnOff(Script) hinzuzufügen.

    Screenshot des Skripts zum Quad hinzufügen.

  2. Suchen Sie im Fenster "Hierarchie" nach PressableButton_32x32mm_IconAndTextUnder>"TextLabelUnder". Wenn das Quad-Objekt weiterhin in der Hierarchie ausgewählt ist, suchen Sie im Inspektorfenster die Komponente "Raumgröße aus" (Skript), und ziehen Sie die TextLabelUnder-Komponente in das Feld "Textobjekt button ".

    Screenshot der Suche nach dem Quad-Objekt in der Hierarchie mit der SpatialierOnOff-Komponente.

  3. Um die Schaltfläche so festzulegen, dass das SpatializeOnOff-Skript aufgerufen wird, wenn die Schaltfläche losgelassen wird, müssen Sie interagierbare Skripts konfigurieren. Wählen Sie im Fenster "Hierarchie" die PressableButton_32x32mm_IconAndTextUnder aus. Suchen Sie im Inspektorfenster nach der Komponente "Pressable Button" , und wählen Sie das + Symbol unter dem OnClicked () -Ereignis aus.

    1. Wenn das PressableButton_32x32mm_IconAndTextUnder-Objekt noch im Hierarchiefenster ausgewählt ist, klicken Sie auf das Quad-Objekt aus dem Hierarchiefenster in das leere Feld "Keine "(Objekt) " des Ereignisses, das Sie soeben hinzugefügt haben, um das ButtonParent-Objekt auf das Button Click-Ereignis von dieser Schaltfläche zu lauschen.

    2. Wählen Sie die Dropdownliste "Keine Funktion " und dann "SpatializeOnOff>SwapSpatialization()" aus, um das räumliche Audio zu aktivieren und zu deaktivieren.

    Screenshot der Aktionseinstellungen für Schaltflächen.