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

Завершено

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

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

  1. Щелкните правой кнопкой мыши в окне проекта и выберите "Создать>скрипт C#", чтобы создать скрипт C#. Введите подходящее имя для скрипта; например, SpatializeOnOff.

    Screenshot of creating a 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. Выберите Quad в иерархии. В окне инспектора нажмите кнопку "Добавить компонент ", чтобы добавить SpatializeOnOff(Script)

    Screenshot of Add script to quad.

  2. В окне иерархии найдите PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Если объект Quad по-прежнему выбран в иерархии, в окне инспектора найдите компонент "Пространственный отключено" (скрипт) и перетащите компонент TextLabelUnder в поле "Текстовый объект кнопки".

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

  3. Чтобы задать кнопку для вызова скрипта SpatializeOnOff при выпуске кнопки, необходимо настроить интерактивный скрипт. В окне иерархии выберите PressableButton_32x32mm_IconAndTextUnder. В окне инспектора найдите компонент кнопки с возможностью нажатия и выберите + значок в событии OnClicked ().

    1. Если объект PressableButton_32x32mm_IconAndTextUnder по-прежнему выбран в окне иерархии, щелкните и перетащите объект Quad из окна иерархии в пустое поле None (Object) события, которое вы только что добавили, чтобы объект ButtonParent прослушивал событие нажатия кнопки из этой кнопки.

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

    Screenshot of Button action settings.