Для одного общего регулятора можно управлять AudioListener.volume. Этот вариант подходит вашему учебному меню без отдельных каналов музыки и эффектов и без сохранения настроек между запусками.
| Элемент | Настройка | Причина |
|---|
| Slider | Min Value равен нулю, Max Value равен единице | Такой диапазон соответствует допустимой общей громкости слушателя |
| Whole Numbers | Выключен | Иначе ползунок с диапазоном ноль–один будет фактически иметь только два уровня |
| Обработчик | Публичный метод SetVolume с параметром float | Событие ползунка может передать ему текущее число |
| Присваивание | AudioListener.volume получает Mathf.Clamp01(value) | Ограничение защищает диапазон при вызове метода не только из этого ползунка |
| Событие | Динамический float в On Value Changed | В метод должно приходить новое значение ручки, а не заранее вписанная константа |
| Начало | Значение Slider согласовано с текущей громкостью | Положение ручки не должно обещать одну громкость, когда фактически установлена другая |
Вставьте метод внутрь своего компонента:
public void SetVolume(float value)
{
AudioListener.volume = Mathf.Clamp01(value);
}
После компиляции перетащите объект с компонентом в событие Slider и выберите этот метод. Проверьте звук в Play на нуле, единице и промежуточном положении. Если тишина остаётся при единице, проверьте сами AudioSource и другие настройки звука: общий регулятор не включает выключенный источник.
Этот пример не сохраняет значение после закрытия игры. Сейчас достаточно убедиться, что пользовательский ввод меняет громкость в текущей сессии. Для раздельных каналов позднее можно использовать группы AudioMixer и отдельные регуляторы.
Лучший ответ
4o-mini
4o-mini
Unity как сделать настройки?
Ползунок
Добавьте uGUI Slider на готовую панель. Задайте Min Value = 0, Max Value = 1 и отключите Whole Numbers, чтобы были промежуточные значения.
Обработчик
В компоненте настроек создайте публичный метод:
Метод находится внутри вашего MonoBehaviour. В On Value Changed ползунка назначьте объект с этим компонентом и выберите SetVolume из списка динамических float обработчиков.
Проверка
Начальное значение Slider согласуйте с AudioListener.volume. Запустите Play и переместите ручку. Если всегда устанавливается одно число, вероятно, выбран обработчик с постоянным аргументом. Это общая громкость слушателя, а не отдельное управление музыкой и эффектами.