Переменные - это контейнеры, содержащие некоторые значения/информацию. У них есть имя. Например, переменная с именем player_health
может содержать 100, или переменная с именем player_name
может содержать имя игрока («Питер», «Линдси» и т. д.). Зависит только от вас, что вы хотите назвать переменными и, что вы хотите хранить внутри них.
Переменная в GML может хранить:
100
, 45.534
, -42.2
"Учитель"
, "Питер"
true
или false
price = 50;
Здесь мы инициализировали переменную с именем price
, которая содержит 20
в качестве значения. Если переменная уже была инициализирована ранее, то эта будет изменять ее значение до 20
.
Примечание: в GML не обязательно помещать точку с запятой (;
) после каждого утверждения. Поэтому не стесняйтесь пропустить её и сосредоточиться на главном коде.
price = 4 * 5;
price = 40 / 2;
price += 20;
price -= 20;
price *= 2;
price /= 2;
Также вы можете использовать переменные в математических выражениях…
a = 4;
b = 5;
c = a + b;
Здесь c будет хранить 9 из-за выражения a + b (что означает, что 4 + 5 как a равно 4, а b равно 5).
Эти переменные инициализируются ключевым словом var
. Они сбрасываются, когда событие было инициализировано в конце. Они могут использоваться только внутри события, если только не инициализированы снова.
var price = 2;
Этот код инициализирует локальную переменную price
. Предположим, что событие, в котором находился этот код, было событием Step; то переменная может использоваться только в событии Step. Если вы попытаетесь использовать её без инициализации в другом событии, то она вернет ошибку, поскольку она там не существует.
Это обычные переменные, которые инициализируются путем присвоения значения.
price = 20;
Доступ к этим переменным возможен во всех событиях объекта/экземпляра, после того, как они был инициализированы.
Это переменные, к которым могут получить доступ все объекты в вашей игре - отсюда и название «global». Существует два способа создания таких переменных:
globalvar
globalvar price;
price = 2;
Как только переменная была инициализирована через globalvar
, она может использоваться любым экземпляром, присутствующим в комнате.
global.prefix
global.price = 2;
Таким образом, вам не нужно инициализировать переменную с помощью globalvar
, но вы должны использовать global.prefix
каждый раз, когда вы хотите использовать эту переменную.
Есть также некоторые встроенные переменные, которые означают что-то особенное в GameMaker. Вот несколько примеров:
Это встроенные переменные, которые уникальны для каждого экземпляра. Они также могут быть известны как свойства экземпляра. Вот несколько важных примеров:
x: горизонтальное расположение экземпляра внутри комнаты (в пикселях)
y: вертикальное расположение экземпляра внутри комнаты (в пикселях)
speed: скорость экземпляра (в пикселях на шаг)
direction: направление, в котором экземпляр перемещается (в градусах), по умолчанию: 0
hspeed: горизонтальная скорость (в пикселях/шаг)
vspeed: вертикальная скорость (в пикселях / шаг)
image_angle: вращение спрайта (в градусах), по умолчанию: 0
image_xscale: горизонтальное масштабирование спрайта, по умолчанию: 1
image_yscale: вертикальное масштабирование спрайта, по умолчанию: 1
image_index: суб-изображения спрайта, который отображает экземпляр
image_speed: скорость, с которой спрайт меняет свои суб-изображения
sprite_index: спрайт, используемый экземпляром
Вы можете изменять или использовать эти переменные так же, как обычные.
//изменить местоположение на 200, 150
x = 200;
y = 150;
//сделать спрайт в 2 раза больше
image_xscale = 2;
image_yscale = 2;
//вращение спрайта на 180 градусов (половину)
image_angle = 180;
Текст, который появляется после //
, является комментарием. Это не влияет на код; он там, чтобы вы могли объяснить, что делает ваш код, или писать важные вещи, которые вы хотели бы запомнить, глядя на ваш код.
Вы также можете написать многострочные комментарии - просто запустите их с /*
и закончите с помощью */
.
Эти встроенные переменные, которые являются глобальными для каждого экземпляра.
Вот несколько примеров:
room_speed: количество шагов, выполняемых комнатой за одну секунду, по умолчанию: 30
score: счет в вашей игре, может хранить любое числовое значение, хотя
health: здоровье вашего игрока, тоже может хранить любое числовое значение
lives: количество жизней, может также хранить любое числовое значение