Aktivieren und Deaktivieren der Spatialisierung zur LaufzeitEnabling and disabling spatialization at run time

ZieleObjectives

In diesem vierten Kapitel gehen Sie wie folgt vor:In this 4th chapter, you'll:

  • Hinzufügen eines neuen Skripts zum Steuern der Spatialisierung eines Spiel ObjektsAdd a new script to control spatialization on a game object
  • Das spatialization-Steuerelement Skript aus Schaltflächen Aktionen SteuernDrive the spatialization control script from button actions

Spatialization-Steuerelement Skript hinzufügenAdd spatialization control script

Klicken Sie mit der rechten Maustaste in den Bereich Projekt , und erstellen Sie ein neues c#-Skript, indem Sie > c#-Skript erstellen auswählen.Right-click in the Project pane and create a new C# script by choosing Create -> C# Script. Benennen Sie Ihr Skript mit dem Namen "spatializeonoff".Name your script "SpatializeOnOff".

Erstellen des Skripts

Doppelklicken Sie im Projekt Bereich auf das Skript, um es in Visual Studio zu öffnen.Double-click the script in the Project pane to open it in Visual Studio. Ersetzen Sie die Standardskript Inhalte durch Folgendes:Replace the default script contents with the following:

Hinweis

Mehrere Zeilen des Skripts werden auskommentiert. Diese Zeilen werden in Kapitel 5auskommentiert.Several lines of the script are commented out. These lines will be uncommented in Chapter 5.

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 Spatialisierung passt das Skript nur die spatialblend -Eigenschaft an, sodass die spatialization -Eigenschaft aktiviert ist.To enable or disable spatialization, the script only adjusts the spatialBlend property, leaving the spatialization property enabled. In diesem Modus wendet Unity weiterhin die volumekurve an.In this mode, Unity still applies the Volume curve. Wenn der Benutzer die räumungszeit bei weitem von der Quelle deaktivieren würde, würde er das Volume plötzlich anwachsen.Otherwise, if the user were to disable spatialization when far from the source, they would hear the volume increase abruptly.

Wenn Sie die spatialization vollständig deaktivieren möchten, ändern Sie das Skript so, dass auch die Eigenschaft spatialization booleschen der SourceObject -Variablen angepasst wird.If you prefer to fully disable spatialization, modify the script to also adjust the spatialization boolean property of the SourceObject variable.

Fügen Sie das Skript an, und Steuern Sie es über die SchaltflächeAttach your script and drive it from the button

Klicken Sie im Bereich Inspector des Quad auf Komponente hinzufügen , und fügen Sie das Skript spatialize on off hinzu:On the Inspector pane of the Quad, click Add Component and add the Spatialize On Off script:

Skript zu Quad hinzufügen

Auf der Komponente spatialize on off des Quad:On the Spatialize On Off component of the Quad:

  1. Suchen Sie den Betreff " PressableButtonHoloLens2-> iconandtext-> textmeshpro " in der Hierarchie:Find the PressableButtonHoloLens2 -> IconAndText -> TextMeshPro subject in the Hierarchy:

Suchen des PressableButtonHoloLens2-Objekts in der Hierarchie

  1. Ziehen Sie den Betreff textmeshpro auf das Feld buttontextobject der Komponente spatialize on off .Drag the TextMeshPro subject onto the ButtonTextObject field of the Spatialize On Off component

Nachdem diese Änderungen vorgenommen wurden, sieht die spatialize on off -Komponente des Quad wie folgt aus:After these changes, the Spatialize On Off component of the Quad will look like this:

Räumliche

Um die Schaltfläche so festzulegen, dass das Skript spatialize on off aufgerufen wird, wenn die Schaltfläche losgelassen wird, öffnen Sie den Inspektor -Bereich des PressableButtonHoloLens2 -Objekts, suchen Sie die interactable -Komponente und:To set the button to call the Spatialize On Off script when the button is released, open the Inspector pane of the PressableButtonHoloLens2 object, find the Interactable component, and:

  1. Suchen Sie den OnClick () -Bereich des Unterabschnitts " Ereignisse ".Find the OnClick () region of the Events subsection
  2. Ziehen Sie den Quad aus der- Hierarchie in den Zielobjekt Slot.Drag the Quad from the Hierarchy into the target object slot.
  3. Wählen Sie im Dropdown Feld Aktion die Option spatializeonoff. tauapspatialization aus.Select SpatializeOnOff.SwapSpatialization from the action drop-down box.

Nachdem diese Änderungen vorgenommen wurden, sieht die interactable -Komponente wie folgt aus:After these changes, the Interactable component will look like this:

Schaltflächen Aktions Einstellungen

Nächste SchritteNext steps

Testen Sie Ihre APP auf einem hololens 2 oder im Unity-Editor.Try out your app on a HoloLens 2 or in the Unity editor. In der App können Sie nun auf die Schaltfläche klicken, um die Spatialisierung im Video zu aktivieren und zu deaktivieren.In the app, you can now touch the button to activate and deactivate spatialization on the video. Wenn Sie im Unity-Editor testen, drücken Sie die Leertaste, und Scrollen Sie mit dem Mausrad, um die Hand Simulation zu aktivieren.When testing in the Unity editor, press the space bar and scroll with the scroll wheel to activate hand simulation.