Всем мяу!
Сегодня я хочу поделиться простым способом добавления настройки звука в ваши игры!
Для добавления настроек громкости я буду использовать AudioMixer и Slider.
Пошаговое руководство
Шаг 1 - Создание AudioMixer
В проекте в любой папке создаём Audio Mixer.
По созданному ассету кликаем два раза, чтобы открылось окно микшера.
Шаг 2 - Добавляем группы в AudioMixer
В открывшемся окне выделяем Master во вкладке Groups и потом нажимаем на плюсик.
Создаваемые группы можно переименовать. Я буду настраивать громкость музыки и громкость эффектов, поэтому мои созданные группы называются Music и Effects.
Шаг 3 - Выносим параметры из AudioMixer
Теперь нажимаем на созданную группу, чтобы в инспекторе справа отобразились её свойства.
В свойствах находим Volume и нажимаем по нему правой кнопкой мыши (ПКМ).
В выпадающем списке выбираем первый пункт (Expose ... to script).
Эти действия повторим и для второй группы.
Теперь у нас вынесены 2 параметра.
Шаг 4 - Задаём названия параметров в AudioMixer
Увидеть вынесенные параметры можно в выпадающем списке Exposed Parameters.
Тут же можно и переименовать их. Для этого нажми дважды на параметр и введи новое имя.
Я использую такие названия параметров:
_musicVolume для Volume (of Music)
_effectsVolume для Volume (of Effects)
Шаг 5 - Задаём AudioMixer для AudioSource
Теперь нам нужно привязать источники звука к желаемому каналу нашего AudioMixer.
Для этого в поле Output в AudioSource перетянем одну из созданных групп (Music или Effects).
Для AudioSource, которые издают звуки эффектов выставим Effects группу, AudioSource с музыкой - Music группу.
Шаг 6 - Создаём основные параметры скрипта
Создадим скрипт AudioMixerSliderExample.cs.
В нём зададим основные параметры для нашего слайдера громкости.
Константа DisabledVolume = -80 отвечает громкость микшера, на которой он перестаёт воспроизводить звук. Это важно, т.к. даже на громкости -75 звук всё ещё будет воспроизводиться, просто очень тихо.
Шаг 7 - Добавим скрипт на слайдер
Создадим объект MusicVolume. В него добавим подпись (Text) и сам слайдер (Slider). На объект MusicVolume добавим наш скрипт AudioMixerSliderExample.
Перетащим в поля:
VolumeSlider - созданный Slider
AudioMixer - созданный ранее ассет AudioMixer
В MixerParameter запишем названия параметров из шага 4.
Для слайдера музыки - _musicVolume, для эффектов - _effectsVolume.
В MinimumVolume запишем минимальное значение громкости, перед выключением звука. Я использую значение -20.
Можно использовать и более низкие значения. Это будет влиять на то, как тихо звучит музыка или звук, когда ползунок слайдера приближается к нулю.
Шаг 8 - Изменение громкости AudioMixer
Теперь напишем метод SetMixerVolume, который будет вызываться при перемещении ползунка слайдера.
Значение ползунка слайдера (от 0 до 1) будет передаваться с помощью параметра volumeValue.
Шаг 9 - Обновление значения слайдера
При запуске скрипта нам надо, чтобы ползунок слайдера показывал текущую громкость микшера.
Считывать громкость микшера будем в методе GetMixerVolume.
Шаг 10 - Подготовим два слайдера
Теперь, когда скрипт готов, можно создать второй слайдер (по примеру из шага 7).
Один слайдер для музыки, второй для эффектов.
Шаг 11 - Привяжем метод к событию слайдера
Чтобы при перемещении ползунка вызывался написанный нами метод UpdateMixerVolume, нам надо добавить этот метод в событие OnValueChanged у Slider.
Выбрать нужно именно первый UpdateMixerVolume. Тогда в параметр volumeValue в нашем скрипте будет передаваться текущее положение ползунка слайдера.
Проверка работоспособности
Мы закончили! Теперь можно проверять, как всё работает!
Если всё работает правильно, то при перемещении ползунка Slider в AudioMixer будет двигаться стрелочка громкости в соответствующей группе.
- При максимальном значении громкости (ползунок справа) - она будет возле нуля.
- При минимальном значении громкости (ползунок слева) - она будет в самом низу (-80).
- При серединных значения громкости (ползунок не на краях) - она будет в диапазоне от 0 до -20 (не включительно).
Получившийся проект и код
Весь код получившегося скрипта можно сверить тут.
Проект с получившейся сценой, префабами слайдеров и настроенным микшером можно посмотреть тут.
В ближайшее время я дополнительно добавлю в репозиторий ещё одну версию этого слайдера (с разделением пользовательского интерфейса и самой логики). Ссылка появится тут.