Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на 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 — Получает текущий режим.
Все режимы меню описаны в файле 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.
На этом все.
Ссылка для скачивания плагина
Комментарии (12)
Watcover3396
25.04.2018 08:16Замечательно, только вот не хватает видео, ставить плагин лень, но авось там чего необычное есть =)
deema35 Автор
25.04.2018 08:23Если вы хотите посмотреть на работу плагина то могу посоветовать мою игру именно для неё я его и разработал ссылка.
kovalevsky
25.04.2018 09:38т.е. вместо видео, Вы просто предлагаете качать неизвестно чей, неивестно какой исполняемый файл?
deema35 Автор
25.04.2018 10:03Хорошо я добавил видео. www.youtube.com/watch?v=Ow0ZKHoC4wM&feature=youtu.be
qant
25.04.2018 15:04Выглядит приятно. Было бы круто доработать ваши игры (гоночки и паркур) для VR шлемов. Судя по графике, производительность должна быть на уровне. Если не ошибаюсь что в Анриал все это есть из коробки, так что возможно, что доработать не окажется сложной задачей.
Если будет желание, то я найду для вас желающих протестировать на вайве, вайве про, окулус, и др устройствах.
Плюсом для вас дополнительный опыт разработки VR.deema35 Автор
25.04.2018 15:05Боюсь что разрабатывать VR проект без VR очков это все равно что плавать в бассейне без воды.
valera5505
Но в итоге это больше похоже не на статью, а на документацию к плагину. А ответ на этот вопрос звучит как: «Сделал плагин.»