Pull to refresh

Создание главного меню игры

Reading time3 min
Views13K


Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Разрабатывая игры каждый из нас сталкивается с необходимостью создания меню игры, в котором можно осуществлять настройки, а также выбирать режимы игры. В этой статье я покажу каким образом эту проблему решил я. Как обычно все исходники будут представлены в конце статьи.

Весь код я упаковал в плагин. После того как вы скопируете плагин в ваш проект, вам нужно будет создать новый класс HUD, который должен быть производным классом от MainMenuPluginHUD. Через данный класс осуществляется все управление. Вот его настройки.

TextScale, MarkColor, MarkLenght — Параметры отвечающие за отображение информации на радаре.

SoundClass — В настройках есть уровень громкости, соответственно сюда нужно поместить SoundClass к которому будут привязаны звуки, которыми вы хотите управлять.

MainMenuMapName — Имя уровня на котором будет отображаться главное меню. То есть при загрузке этого уровня будет включен режим MainMenu на остальных уровнях будет включен режим GameScreen.

Дальше идет перечень виджетов отвечающие за определенные режимы меню.

GameScreenWidget — Виджет выводящийся на экране игры.

MainMenuWidget — Главное меню выводящиеся в начале игры.

GameMenuWidget — Меню выводящиеся во время игры.

SettingsMenuWidget — Меню настроек игры.

KeyBindMenuWidget — Меню назначения клавиш.

TitlesMenuWidget — Меню титров.

ControlWidget — Экран описывающий управление игры.

Все виджеты располагаются в папке Content плагина, если вы их не видите у вас снята опция «Show Plugin Content».

Кроме этого имеются функции:

SetMainMenuMode — Установить текущий режим меню в качестве параметра получает EMainMenuMode.

GetMainMenuMode — Получает текущий режим.

Вызов меню игры
image


Все режимы меню описаны в файле MainMenuMode.h. Добавлять новые режимы или удалять старые нужно там.

ButtonClick и GetButtonName — Необходимы для работы кнопок. Кнопки содержат внутри себя переменную EMainMenuPluginButtonType и при нажатии на кнопку или её спавне происходит вызов соответствующей функции с этим параметром.

Все кнопки описаны в файле MainMenuPluginButtons.h. Добавлять и удалять кнопки нужно там-же.

SetPropertyInt, GetPropertyInt, GetPropertyNameInt — Тоже самое но для виджета SIntProperty_Wiget. Данный виджет предназначен для отображение целых чисел в меню настроек. Кроме параметров Int, имеются также bool и float.

Все параметры описаны в файле MenuSettingsProperty.h.

Кроме HUD'а нужно создать класс GameInstanse производный от MainMenuGameInstance. Чтобы Game instanse работал его нужно выбрать в ProjectSettings->Maps&Modes->GameInstanseClass. Это позволит вам отображать экран загрузки. (Экран загрузки не работает при запуске игры во вьюпорте)

GameInstanse имеет всего два параметра это:

LoadingScreenWidget — Виджет отображающийся при загрузке.

LogoMovie — Имя ролика с лого (без разрешения). Ролик обязательно должен лежать в папке Content/Movies вашего проекта в другие папки его класть нельзя. Ролик обязательно должен иметь разрешение 720p и частоту кадров 25fps, иначе UE его не сможет воспроизвести, это странно учитывая тот факт, что сами Эпики выкладывают Лого на своём сайте в разрешении 1080p и 60fps.

На этом все.

Ссылка для скачивания плагина

Видео демострация



Обновление



Весь код из HUD'а я упаковал в actor component, теперь нет необходимости делать свой HUD производным от MainMenuPluginHUD. Достаточно добавить к HUD'у компонент UMainMenuPluginHUDComponent.
image
Tags:
Hubs:
+7
Comments13

Articles

Change theme settings