Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на 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.

На этом все.

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

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

Комментарии (12)


  1. valera5505
    25.04.2018 08:14

    В этой статье я покажу каким образом эту проблему решил я

    Но в итоге это больше похоже не на статью, а на документацию к плагину. А ответ на этот вопрос звучит как: «Сделал плагин.»


  1. Watcover3396
    25.04.2018 08:16

    Замечательно, только вот не хватает видео, ставить плагин лень, но авось там чего необычное есть =)


    1. deema35 Автор
      25.04.2018 08:23

      Если вы хотите посмотреть на работу плагина то могу посоветовать мою игру именно для неё я его и разработал ссылка.


      1. kovalevsky
        25.04.2018 09:38

        т.е. вместо видео, Вы просто предлагаете качать неизвестно чей, неивестно какой исполняемый файл?


        1. deema35 Автор
          25.04.2018 09:44
          -2

          Что значит неизвестно чей? Он мой.


          1. Peacemaker
            25.04.2018 15:03

            — Что значит, «я»? «Я» бывают разные! (с) Кролик.


      1. Rudmz
        25.04.2018 09:43
        +1

        Лучше роликом на youtube.


  1. deema35 Автор
    25.04.2018 10:03

    Хорошо я добавил видео. www.youtube.com/watch?v=Ow0ZKHoC4wM&feature=youtu.be


    1. qant
      25.04.2018 15:04

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

      Если будет желание, то я найду для вас желающих протестировать на вайве, вайве про, окулус, и др устройствах.

      Плюсом для вас дополнительный опыт разработки VR.


      1. deema35 Автор
        25.04.2018 15:05

        Боюсь что разрабатывать VR проект без VR очков это все равно что плавать в бассейне без воды.


  1. egalsup
    26.04.2018 16:58

    А не подскажете, какая версия используется?


    1. deema35 Автор
      26.04.2018 16:59

      UE 4.19.