Каков наилучший способ сделать систему главного меню?

12

Я знаю, что легко создавать кнопки, которые подсвечивают, когда вы наводите на них мышь, но когда дело доходит до подменю, я немного застрял. Кто-нибудь получил несколько советов о том, как создать главное меню с подменю? (например, Одиночная игра -> Загрузить Сохранить -> Сохранить 1-5? -> Начать игру и т. д.)

Dlaor
источник

Ответы:

12

Обычно это делается с помощью стека игровых состояний. Например, каждый элемент, перечисленный выше, будет помещен в стек следующим образом:

  • Игровой процесс
  • Выберите Сохранить
  • Одиночная игра
  • Главное меню

Где каждое состояние в стеке ссылается на свои подпункты. Когда кнопка нажата, ее соответствующее состояние помещается в стек и становится самым верхним элементом, который рисуется и взаимодействует с ним. Обычно вы рисуете только это верхнее состояние, если только между слоями нет прозрачности, и в этом случае вы рисуете от нижней части стека до тех пор, пока не начнете рисовать активное состояние.

Шон Джеймс
источник
Если вы хотите узнать
Коммунистическая утка
6

Вы должны определенно реализовать его в качестве конечного автомата (FSM) или стека состояний (подменю), в зависимости от конкретных требований. Какое бы подменю было текущим в FSM или верхним в стеке, оно выводится на экран и обрабатывает ввод. И затем, когда он обнаруживает, что пользователь нажимает кнопку, он переключает FSM или помещает в стек правильное состояние, чтобы перейти к следующему экрану.

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

Ricket
источник
4

«Лучший способ» полностью субъективен. Посмотрите, как другие игры делают это, и посмотрите, найдете ли вы ту, которая хорошо работает. Единственное, что вам абсолютно необходимо, - это способ для пользователя нажать Отмена и вернуться на предыдущий уровень. Вы можете дать каждому объекту меню ссылку на меню, из которого оно было открыто, или реализовать его с помощью стека.

Кроме того, все зависит от того, какова ваша игра и как вы хотите, чтобы ваши меню чувствовали. Должно ли каждое меню занимать весь экран в стиле Final Fantasy? Должны ли они отделяться друг от друга, как подменю Windows? Вы должны пойти на что-нибудь экзотическое, как радиальные меню? Это зависит от вас, на самом деле.

Мейсон Уилер
источник