Среда, 19 Сентября 2018, 18:17

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [312]
Статьи об общих понятиях связанных с созданием игр.
Программирование [69]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [123]
Статьи о программах для создания игр, уроки и описания.
Софт [27]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [91]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [67]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какие жанры компьютерных игр вы предпочитаете?
Всего ответов: 1743
Главная » Статьи » Создание игр

Создание меню на Game Maker: Studio
Здравствуйте! В этой статье речь пойдет о создании качественного меню на Game Maker: Studio. В игре часто пренебрегают такой мелочью как меню. Здесь мы сделаем хорошее меню, в котором можно будет управлять как стрелками, так и курсором.

Для начала создадим спрайт указателя, он будет указывать, какой пункт меню мы выбрали. Назовем его, например как у меня, spr_seldraw:



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

Код
var txt, col, str_space;

if !argument5 = false or 0 str_space = argument5 * argument2
  else str_space = 17 * argument2;

txt = argument3;
col = argument4;
draw_set_font(Шрифт);

if !col = false or 0
draw_text_color(argument0,argument1+str_space,argument3,col,col,col,col,100)
else draw_text(argument0,argument1+str_space,argument3);


Поясню его значение, просто некоторые могут его не понять: скрипт предназначен для рисования текста и установки особых параметров таких как цвет текста, его расположение и расстояние между строками.
* 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) }

В идеале объект должен выглядеть примерно так:



Ставим объект в комнату, запускаем, и получаем результат:



До свидания! Удачи вам в освоении GML!

Готовый пример (GMS): скачать
Категория: Создание игр | Добавил: MasterSambo (14 Мая 2015)
Просмотров: 3501 | Комментарии: 2 | Рейтинг: 3.7/6 |
Теги: меню, создание меню в gms, украшение игры в gms, GMS, GML, коды в GMS, для новичков, Создание игры, Game Maker Studio, стартовое окно
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Создание меню на Game Maker: Studio», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 2
+0-
2 iVAN2002   (06 Декабря 2015 14:19)
iVAN2002А как сделать анимированый курсор?

+0-
1 LunarPixel   (17 Мая 2015 09:53)
LunarPixelИ опять же, все полностью взято с готового примера.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Existence Engine
  • Android Game Creator
  • HoZ Engine
  • Filmation Game Creator
  • Aether3D
  • DizzyAGE
  • IKEMEN
  • Virtools
  • e-Adventure
  • World Forge
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2018 Рейтинг