Упражнение. Включение и отключение пространственной виртуализации во время выполнения
В этом уроке вы узнаете, как включить и отключить пространственное распределение во время выполнения и протестировать пространственное распределение в редакторе Unity и HoloLens 2.
Добавить скрипт управления пространственной обработкой
Щелкните правой кнопкой мыши в окне проекта и выберите Create>C# Script для создания скрипта C#. Введите подходящее имя для скрипта; например, SpatializeOnOff.
Дважды щелкните скрипт в окне проекта, чтобы открыть его в 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 по-прежнему применяет кривую тома. В противном случае, если пользователь отключает пространственное распределение, когда далеко от источника, он будет слышать громкость резко увеличиваться.
Если вы предпочитаете полностью отключить пространственное распределение, измените скрипт, чтобы также настроить логическое свойство Spatialization переменной SourceObject.
Присоедините ваш скрипт и управляйте им с кнопки.
Выберите Квадрат в иерархии. В окне инспектора нажмите кнопку Добавить компонент, чтобы добавить SpatializeOnOff(Script)
В окне иерархии найдите PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Если объект Quad по-прежнему выбран в иерархии, в окне Инспектора найдите компонент Spatialize On Off (скрипт) и перетащите компонент TextLabelUnder в поле объект текста кнопки.
Чтобы задать кнопку для вызова скрипта SpatializeOnOff при выпуске кнопки, необходимо настроить интерактивный скрипт. В окне иерархии выберите PressableButton_32x32mm_IconAndTextUnder. В окне инспектора найдите компонент Pressable Button и выберите значок + под событием OnClicked ().
Если объект PressableButton_32x32mm_IconAndTextUnder по-прежнему выбран в окне иерархии, щелкните и перетащите объект Quad из окна иерархии в пустое поле None (Object) события, которое вы только что добавили, чтобы объект ButtonParent прослушивал событие нажатия кнопки из этой кнопки.
Выберите раскрывающийся список No Function, а затем выберите SpatializeOnOff>SwapSpatialization(), чтобы включить или отключить пространственный звук.