Упражнение. Включение и отключение пространственного звука во время выполнения

Завершено

В этом модуле вы узнаете, как включать и отключать пространственный звук во время выполнения и тестировать эту функцию в редакторе Unity и HoloLens 2.

Добавление сценария управления добавления пространственного звука

  1. Щелкните правой кнопкой мыши в окне «Проект» и выберите Создать>Сценарий С#, чтобы создать новый сценарий С#, а затем введите подходящее имя для сценария, например SpatializeOnOff:

    Screenshot of Create script.

  2. В окне «Проект» дважды щелкните сценарий, чтобы открыть его в Visual Studio. Замените содержимое сценария по умолчанию на следующее содержимое:

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

    Примечание

    Чтобы включить или отключить пространственный звук, сценарий настраивает только свойство spatialBlend, а свойство Добавление пространственного звука остается активным. В этом режиме Unity по-прежнему применяет кривую громкости. В противном случае, если пользователю пришлось отключить пространственный звук при увеличении расстояния от источника, он услышит резкое повышение громкости. Если вы предпочитаете полностью отключить пространственный звук, измените сценарий, чтобы настроить также логическое свойство Пространственный звук для переменной SourceObject.

Подключение сценария и его запуск с помощью кнопки

  1. Выберите Четырехугольник в разделе «Иерархия» и в окне Инспектора нажмите кнопку «Добавить компонент», чтобы добавить SpatializeOnOff(Script).

    Screenshot of Add script to quad.

  2. В разделе «Иерархия» найдите PressableButtonHoloLens2>IconAndText>TextMeshPro.

  3. Если объект Четырехугольник по-прежнему выбран в разделе «Иерархия», в окне Инспектора выберите компонент SpatializeOnOff(Script) и перетащите компонент TextMeshPro в PressableButtonHoloLens2.

    Screenshot of Find the PressableButtonHoloLens2 object in the hierarchy.

  4. Чтобы настроить кнопку для вызова сценария SpatializeOnOff при отпускании кнопки, необходимо настроить сценарий, доступный для взаимодействия.

  5. В окне «Иерархия» выберите объект PressableButtonHoloLens2. В окне Инспектора выберите компонент Доступный для взаимодействия (сценарий) и щелкните значок «+"» под событием OnClick ().

    1. Если объект PressableButtonHoloLens2 все еще выбран в окне «Иерархия», щелкните и перетащите объект Четырехугольник из окна «Иерархия» в пустое поле Нет (объект) события, которое вы только что добавили, чтобы объект ButtonParent прослушивал событие щелчка кнопкой мыши из этой кнопки:

    2. Откройте раскрывающийся список No Function (Нет функции) того же события. Затем выберите SpatializeOnOff>SwapSpatialization(), чтобы включить или отключить пространственный звук.

    Screenshot of Button action settings.