Здравствуйте! В этой статье речь пойдет о создании качественного меню на Game Maker: Studio. В игре часто пренебрегают такой мелочью как меню. Здесь мы сделаем хорошее меню, в котором можно будет управлять как стрелками, так и курсором.
Для начала создадим спрайт указателя, он будет указывать, какой пункт меню мы выбрали. Назовем его, например как у меня, spr_seldraw:
Некоторые новички создают кучу спрайтов кнопок, что прибавляет вес к игре, да и вообще это непрактично. Мы же поступим куда более рациональнее, у нас все будет в коде, а вместо кнопок будет текст. Чтобы текст рисовался, добавим скрипт:
Поясню его значение, просто некоторые могут его не понять: скрипт предназначен для рисования текста и установки особых параметров таких как цвет текста, его расположение и расстояние между строками. * draw_set_font(Шрифт) - здесь вы можете добавить в игру свой шрифт и записать сюда его имя.
Теперь создаем объект obj_drawmenu, без спрайта. Делаем событие Create, в него запишем такой код (комментарии подписал, но я поясню его общее значение и работу с ним):
Код
sel_space =30;// пробел между пунктами
sel0 =0;// данные перемернные описывают расположение пункта по вертикали! sel1 = sel_space; sel2 = sel_space *2; sel3 = sel_space *3; sel4 = sel_space *4;
tpl =0// переменная отвечает за выделение пункта min_tpl = sel0;// первый пункт max_tpl = sel4;// последний пункт
sel_color = c_yellow;// цвет выделеного пункта def_color = c_white;// цвет не выделенного пункта
Этот код отвечает за пункты меню. Чтобы добавить новый пункт, надо: создать новую переменную например sel5 и задать ей значение sel_space * (номер пункта), а значении переменной max_tpl указать имя нового пункта (sel5) или последнего пункта.
С Create разобрались. Теперь переходим к событие Step. Также записываем код:
Код
if keyboard_check_pressed(vk_down)then begin if tpl = max_tpl then{ tpl = min_tpl }// если дальше нет пунктов то возвращаемся на первый пункт. else// когда ниже есть пункт то { tpl += sel_space;// перемещаемся на указанный пробел между пунктами вниз. } end; if keyboard_check_pressed(vk_up)then begin if tpl = min_tpl then{ tpl = max_tpl }// если выше нет пунктов то переходим на последний пункт. else// когда выше есть пункт { tpl -= sel_space;// перемещаемся на указанный пробел между пунктами вверх. }
end;
if keyboard_check_pressed(vk_enter)then begin if tpl = sel0 {вашедействие;} if tpl = sel1 {вашедействие;} if tpl = sel2 {вашедействие;} if tpl = sel3 {вашедействие;} if tpl = sel4 {вашедействие;} end
Чтобы новый пункт работал корректно, в Step'e необходимо провести следующую процедуру: в условии нажатия клавиши "Enter" создать условие "if tpl = (имя пункта) { то что будет выполняться при выборе данного пункта }.
Но как все кнопки будут отображаться? Создаем событие Draw и записываем простой код:
Код
if tpl = sel0 {DrawText(x,y,0,'Ваш_пункт',sel_color,sel_space)}else{DrawText(x,y,0,'Ваш_пункт',def_color,sel_space)}// Если выделен пункт sel0 то рисуем его с цветом выделения, иначе рисуем его с цветом по умолчанию! if tpl = sel1 {DrawText(x,y,1,'Ваш_пункт',sel_color,sel_space)}else{DrawText(x,y,1,'Ваш_пункт',def_color,sel_space)} if tpl = sel2 {DrawText(x,y,2,'Ваш_пункт',sel_color,sel_space)}else{DrawText(x,y,2,'Ваш_пункт',def_color,sel_space)} if tpl = sel3 {DrawText(x,y,3,'Ваш_пункт',sel_color,sel_space)}else{DrawText(x,y,3,'Ваш_пункт',def_color,sel_space)} if tpl = sel4 {DrawText(x,y,4,'Ваш_пункт',sel_color,sel_space)}else{DrawText(x,y,4,'Ваш_пункт',def_color,sel_space)}
draw_sprite(spr_seldraw,0,x-20,y+tpl+6);// рисуем стрелку которая будет сбоку от выделенного текста!
И если вы добавили новый пункт, то в событии Draw необходимо сделать следующее: создать условие if tpl = (имя пункта) { DrawText(x,y,номер строки,'Текст пункта',def_color,sel_space); } else { DrawText(x,y,номер строки,'Текст пункта',def_color,sel_space) }
В идеале объект должен выглядеть примерно так:
Ставим объект в комнату, запускаем, и получаем результат:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Создание меню на Game Maker: Studio», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.