Настройки игры — это важная часть меню практически в любом проекте. В этом разделе меню обычно размещаются опции параметров графики, звука, игрового процесса, а также в некоторых случаях у игрока есть возможность переназначить клавиши управления. Если проигнорировать меню настроек и выпустить игру без них, то у некоторых пользователей могут возникнуть проблемы с оптимизацией, в особенности на ПК.

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

Эта статья является одной из четырех частей руководства, посвящённого созданию игровых меню в Unreal Engine 5:
  1. Как сделать главное меню игры в Unreal Engine (UE5)
  2. Как сделать меню настроек в Unreal Engine (UE5)
  3. Как сделать меню выбора уровней в Unreal Engine (UE5)
  4. Как сделать меню паузы игры в Unreal Engine (UE5)

Создание меню настроек игры

Я уже сделал основное меню (холст MainMenu), из которого игрок может перейти в настройки (холст Options), а переключение между холстами меню происходит с помощью WidgetSwitcher.

Структура моего меню предельно проста — кнопки с текстом внутри помещенные в «горизонтальную коробку» (Horizontal Box) и два ползунка (Slider) для регулировки уровня громкости.

Настройки графики

После того, как все необходимые кнопки добавлены в меню, можно перейти в граф для настройки их функциональности. Первыми я настроил параметры разрешения экрана. Для этого выбираем нужную кнопку и задаем действие по нажатию (On Clicked), к которому подключаем Следующие ноды: Get Game User Settings — Set Screen Resolution (к параметру Resolution подключаем Make IntPoint) — Apply Resolution Settings. Входы Target у двух последних узлов соединяем с Return Value у ноды Get Game User Settings.

Остальные настройки графики добавляем по тому же принципу, только меняем ноду отвечающую за настраиваемый параметр. Таким образом, для кнопки отвечающей за качество текстур я задал на действие по нажатию функции из настроек разрешения экрана, но между нодами Get Game User Settings и Apply Settings вставил уже новый узел, который называется Set Texture Quality, у которого можно ввести разные значения обозначающие уровень качества от 0 до 4 в параметре Value.

Качество теней настраивается точно также, но между нодами Get Game User Settings и Apply Settings нужно установить узел который называется Set Shadow Quality, имеющий параметр Value обозначающий уровень (от 0 до 4) качества теней.

Также, в качестве примера я добавил возможность ограничения кадров. Для этой функционирования этой кнопки потребуется установить ноду Set Frame Rate Limit между узлами Get Game User Settings и Apply Settings.

Настройки звука

В меню настроек игры, которое я создаю для этого руководства всего 2 параметра отвечающих за настройки звука — это полосы прокрутки, с помощью которых пользователь сможет настроить уровень громкости музыки или звуковых эффектов. Но перед тем, как добавить функциональность этим настройкам, необходимо сперва создать классы (ПКМ — Sound — Classes — Sound Class) для музыки и эффектов, их я назвал SC_Music и SC_Effects. А также потребуется микшер, который создается таким же образом и его я назвал SCM_Volume. Затем добавить новые классы к звукам используемым в игры.

Также потребуется создать файл сохранения (ПКМ — Blueprint Class — SaveGame (родительский класс) и называем, например SaveSettings) и в него добавить две переменные типа Float, которые я назвал MusicVolume и EffectsVolume. Это позволит сохранить изменения звука при последующем входе в игру.

После того, как создали классы, микшер и файл сохранения, можно возвратиться в Widget Blueprint в котором было создано меню настроек и перейти на вкладу Graph для настройки полос прокрутки (Slider). Так же как и для кнопок необходимо задать действия, но уже по изменению значения, а не нажатию: Slider — On Value Changed (вкладка Events). Затем добавить функционал: On Value Changed — Set Sound Mix Class Override — SET MusicVolume — Save Game to Slot (не забываем дать название слоту сохранения).

Выходящий пин Value у события On Value Changed подключаем к входящему Volume у функции Set Sound Mix Class Override и к переменной которая была создана в файле сохранения и вызвана здесь. Для ноды Set Sound Mix Class Override я задал следующие параметры: In Sound Mix Modifier: SCM_Volume; In Sound Class: SC_Music; Fade in Time: 0,0. А для входящих пинов Target у вызванной переменной и Save Game Object у Save Game to Slot я создал переменную «SaveRefSettings» типа SaveSettings.

Сохранение параметров звука

Чтобы внесенные с помощью полос прокрутки изменения сохранились, необходимо найти или создать ноду Event Construct и от нее создать следующую логику: Event Construct — Sequence:

Then 0 — Does Save Game Exit — Branch: ЕСЛИ ПРАВДА — Load Game from Slot — Cast to SaveSettings — SET SaveRefSettings; ЕСЛИ ЛОЖЬ — Create Save Game Object — SET SaveRefSettings;
Then 1 — Set Value (Target – SliderMusic; In Value – MusicVolume – SaveRefSettings) — Set Value (Target – SliderEffects; In Value – EffectsVolume – SaveRefSettings).

Проверка и загрузка сохранения на уровне

Для того, чтобы во время загрузки игра проверяла сохранения пользовательских настроек и загружала последнее, а также их применяла, необходимо открыть уровень на котором расположено меню настроек и перейти в Level Blueprint. Затем от ноды Event BeginPlay провести следующую логику: Event BeginPlay — Set Base Sound Mix (In Sound Mix – SCM_Volume) — Load Game from Slot — Cast To SaveSettings — Set Sound Mix Class Override (In Sound Mix Modifier: SCM_Volume; In Sound Class: SC_Music; Fade in Time: 0,0). К пину Volume ноды Set Sound Mix Class Override подключается MusicVolume (соединен с пином As Save Settings ноды Cast To SaveSettings). По аналогии добавляем вторую ноду Set Sound Mix Class Override, но уже подключая переменную и класс звуковых эффектов.

Таким образом получилось меню настроек с сохранением параметров громкости музыки и звуков. Вы можете на основе этого создать любой сложности игровые настройки и добавить их в свое главное меню. А если у вас появились вопросы или проблемы в реализации, напишите об этом в комментарии и мы обязательно попробуем решить это.

Great Creator