Найти тему
КОД КОТА

Как сделать слайдер громкости в Unity

Оглавление

Всем мяу!

Сегодня я хочу поделиться простым способом добавления настройки звука в ваши игры!
Для добавления настроек громкости я буду использовать AudioMixer и Slider.

Пошаговое руководство

Шаг 1 - Создание AudioMixer

Создание ассета AudioMixer
Создание ассета AudioMixer

В проекте в любой папке создаём Audio Mixer.

По созданному ассету кликаем два раза, чтобы открылось окно микшера.

Шаг 2 - Добавляем группы в AudioMixer

В открывшемся окне выделяем Master во вкладке Groups и потом нажимаем на плюсик.

Создаваемые группы можно переименовать. Я буду настраивать громкость музыки и громкость эффектов, поэтому мои созданные группы называются Music и Effects.

Создание групп в AudioMixer
Создание групп в AudioMixer

Шаг 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).

Привязка AudioMixer Group к AudioSource Output
Привязка AudioMixer Group к AudioSource Output

Для AudioSource, которые издают звуки эффектов выставим Effects группу, AudioSource с музыкой - Music группу.

Шаг 6 - Создаём основные параметры скрипта

Создадим скрипт AudioMixerSliderExample.cs.
В нём зададим основные параметры для нашего слайдера громкости.

Основные параметры скрипта AudioMixerSliderExample.cs
Основные параметры скрипта 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.

Метод изменения громкости AudioMixer
Метод изменения громкости AudioMixer

Шаг 9 - Обновление значения слайдера

При запуске скрипта нам надо, чтобы ползунок слайдера показывал текущую громкость микшера.
Считывать громкость микшера будем в методе GetMixerVolume.

Метод считывания громкости AudioMixer
Метод считывания громкости AudioMixer

Шаг 10 - Подготовим два слайдера

Теперь, когда скрипт готов, можно создать второй слайдер (по примеру из шага 7).
Один слайдер для музыки, второй для эффектов.

Слайдеры музыки и эффектов
Слайдеры музыки и эффектов

Шаг 11 - Привяжем метод к событию слайдера

Чтобы при перемещении ползунка вызывался написанный нами метод UpdateMixerVolume, нам надо добавить этот метод в событие OnValueChanged у Slider.
Выбрать нужно именно первый UpdateMixerVolume. Тогда в параметр volumeValue в нашем скрипте будет передаваться текущее положение ползунка слайдера.

Привязка метода UpdateMixerVolume к событию перемещения ползунка Slider
Привязка метода UpdateMixerVolume к событию перемещения ползунка Slider

Проверка работоспособности

Мы закончили! Теперь можно проверять, как всё работает!

Если всё работает правильно, то при перемещении ползунка Slider в AudioMixer будет двигаться стрелочка громкости в соответствующей группе.

  • При максимальном значении громкости (ползунок справа) - она будет возле нуля.
  • При минимальном значении громкости (ползунок слева) - она будет в самом низу (-80).
  • При серединных значения громкости (ползунок не на краях) - она будет в диапазоне от 0 до -20 (не включительно).

Получившийся проект и код

Весь код получившегося скрипта можно сверить тут.
Проект с получившейся сценой, префабами слайдеров и настроенным микшером можно посмотреть
тут.

В ближайшее время я дополнительно добавлю в репозиторий ещё одну версию этого слайдера (с разделением пользовательского интерфейса и самой логики). Ссылка появится тут.