Übung: Aktivieren und Deaktivieren der Verräumlichung zur Laufzeit

Abgeschlossen

In dieser Einheit erfahren Sie, wie Sie das Verräumlichen zur Laufzeit aktivieren und deaktivieren und wie Sie das Verräumlichen im Unity-Editor und auf HoloLens 2 testen.

Hinzufügen eines Skripts zum Steuern der Verräumlichung

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

    Screenshot of creating a script.

  2. Doppelklicken Sie im Fenster „Project“ (Projekt) auf das Skript, um es in Visual Studio zu öffnen. Ersetzen Sie den Standardinhalt des Skripts 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

    Zum Aktivieren oder Deaktivieren der Verräumlichung wird mit dem Skript lediglich die Eigenschaft spatialBlend angepasst. die Eigenschaft spatialization bleibt aktiviert. In diesem Modus wird in Unity weiterhin die Kurve Volume (Lautstärke) angewendet. Ansonsten würde die Lautstärke abrupt ansteigen, wenn Benutzer*innen die Verräumlichung bei großer Entfernung von der Quelle deaktivieren.

    Wenn Sie die Verräumlichung vollständig deaktivieren möchten, ändern Sie das Skript so, dass auch die boolesche Eigenschaft Spatialization der Variablen SourceObject angepasst wird.

Anfügen des Skripts und Anpassen des Skripts ü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 of Add script to quad.

  2. Suchen Sie in dem Hierarchie-Fenster nach PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Lassen Sie das Objekt Quadrupel im Bereich „Hierarchie“ ausgewählt, und suchen Sie im Fenster „Inspektor“ nach der Komponente Verräumlichen An Aus (Script). Verschieben Sie die Komponente TextLabelUnder in das Feld Schaltfläche Textobjekt per Drag & Drop.

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

  3. Wenn Sie die Schaltfläche so festlegen möchten, dass das Skript SpatializeOnOff aufgerufen wird, wenn die Schaltfläche losgelassen wird, müssen Sie das interaktive Skript konfigurieren. Wählen Sie im Fenster „Hierarchie“ das Objekt PressableButton_32x32mm_IconAndTextUnder aus. Suchen Sie im Inspektorfenster nach der Komponente Drückbare Schaltfläche und wählen Sie das Symbol + unter dem OnClicked () Ereignis aus.

    1. Lassen Sie das Objekt PressableButton_32x32mm_IconAndTextUnder im Fenster „Hierarchie“ ausgewählt. Klicken Sie auf das Objekt Quadrupel, und ziehen Sie es aus dem Fenster „Hierarchie“ in das leere Feld Kein (Objekt) des soeben hinzugefügten Ereignisses. Dadurch lauscht das ButtonParent-Objekt auf das Klickereignis für diese Schaltfläche.

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

    Screenshot of Button action settings.