Übung – Aktivieren und Deaktivieren der Raumisierung zur Laufzeit
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
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.
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
Wählen Sie "Quad " in der Hierarchie aus. Verwenden Sie im Inspektorfenster die Schaltfläche " Komponente hinzufügen ", um SpatializeOnOff(Script) hinzuzufügen.
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 ".
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.
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.
Wählen Sie die Dropdownliste "Keine Funktion " und dann "SpatializeOnOff>SwapSpatialization()" aus, um das räumliche Audio zu aktivieren und zu deaktivieren.