Найти в Дзене

Как управлять игровым меню в программе Game Maker Studio (или просто Game Maker) с множеством уровней

В интернете многие не могут найти как управлять игровым меню, когда при нажатии на "Esc" возвращаешься в меню и обратно в игру. Как быть если есть очень много уровней (комнат). Допустим по имени перейти, но не писать же код для каждой комнаты, хотя это тоже вариант.
Информация есть о том как создать меню, а как им управлять сложно найти, если вообще есть. Один человек в группе вконтакте обратился за помощью, как это сделать, и я решил ему помочь. После того как у него получилось он посоветовал мне опубликовать статью об этом, так как сложно найти пути решения данной проблемы, и я решился на это.
По своему опыту в этой программе разработал способ, как эту проблему легко решить, нужно всего лишь понимать как работают эвенты или события объектов и уметь вставить код в конкретное место.
Нам понадобиться имя менушной комнаты, объект "контроль", который обязательно должен быть постоянным, то есть эта галочка должна быть поставлена у него в свойствах. Постоянные объекты существуют всегда

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

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

По своему опыту в этой программе разработал способ, как эту проблему легко решить, нужно всего лишь понимать как работают эвенты или события объектов и уметь вставить код в конкретное место.

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

При нажатии дважды мышкой по объекту открываются его свойства. Создаем новую комнату меню, называем её как-то и ставим пустой только что созданный объект контроль (постоянный) в верхний левый угол в редакторе комнаты. Он будет в виде вопросика, так как у него нету спрайта. Комнаты могут быть как постоянными, так и нет, значения не имеет. Далее создаем нужное (любое) количество других комнат, которые будут в игре (не меню). При нажатии на Esc игра будет переходить в меню, а потом обратно в предыдущую комнату, ту, которая была до перехода.

Дальше заходим в объект контроля и в его событии создания прописываем две переменные, которые нам будут осуществлять переходы. Каждое событие я поместил в скобки.

Для выбора события объекта в его свойствах нужно нажать правой кнопкой по области под надписью Events, там выбрать Add Event (нам понадобиться Create, Other>Room start, и Key Press>Others>Escape). Вместо room_menu везде нужно заменить на имя комнаты меню. Для создания кода переходим на вкладку Control и под Code находим Execute Code и жмём по ней правой кнопкой мыши (пкм).

Вставляем туда код после create event в скобках до room start. Аналогично для остальных событий.

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

Если проект только что создан, то завершить игру будет проблематично (если в вашей версии не предусмотрено это по умолчанию, придется лезть в диспетчер задач и обрывать процесс принудительно), можно конечно кликнуть по крестику в верхнем правом углу окна игры (ну а если полно экранный режим?), сделайте хоть завершение игры при нажатии на кнопку, например Enter. Если игра автоматически завершается при нажатии на Esc, то необходимо отключить эту опцию в настройках и тогда точно создать событие завершения игры.

Всё! Запускаем проект и меню готово. Ставьте лайки, подписывайтесь, может надумаю ещё какую-нибудь статью опубликую потом. Код проверял лично на версии 1.4 и на 2+ тоже все работает. Думаю и 1.4- тоже все будет хорошо.

(create event)

rm=room_menu rmch=room_menu

(room start)

if room!=room_menu rm=room

(Key press Esc)

if rm!=room_menu{if room=room_menu rmch=rm if room!=room_menu rmch=room_menu room_goto(rmch)}

Будет работать с любым количеством комнат и одной менушной, с её именем.

* room_menu - имя менушной комнаты