---
title: "🕹️ Переменные в GameMaker"
date: 2022-11-24T20:25:51+03:00
draft: false
tags: [gamedev, tips, gamemaker]
---

## О переменных

Как и другие языки программирования,
[GML](https://manual.yoyogames.com/#t=GameMaker_Language.htm)
использует переменные в качестве базовой единицы для большинства операций программирования.

Переменные в GML могут хранить множество различных типов данных, например:

* действительное число (`100`, `2`, `456575`, `-56` и т. д.)
* строка (`Привет, мир!`)
* целое число (`1`, `556`, `-7`)
* логическое значение (`true` или `false`)

```cpp
var _num = 126.4545;
var _str = "Hello World";
new_num = _num * 100;
global.my_string = _str + " I said";
```

Со списком всех типов переменных можно ознакомится по этой
[ссылке](https://manual.yoyogames.com/GameMaker_Language/GML_Overview/Data_Types.htm).

## Использование переменных

Присвоение значения переменной выглядит так:

```text
<переменная> = <выражение>;
```

Язык GML также принимает `:=` для приcваивания значения переменной,
хотя это не самый распространенный способ.

```text
<переменная> := <выражение>;
```

## Локальные переменные

Локальная переменная — это переменная, которая создается только для определенного события
или функции, а затем удаляется, когда событие или функция завершены.

Чтобы объявить локальную переменную, используется оператор `var`:

```cpp
var _i, _num, _str;
_i = 0;
_num = 24.5;
_str = "Hello World";

// or

var _i = 0, _num = 24.5, _str = "Hello World";

// or

var _i = 0;
var _num = 24.5;
var _str = "Hello World"; 
```

Больше о
[локальных переменных](https://manual-ru.yoyogames.com/GameMaker_Language/GML_Overview/Variables/Local_Variables.htm)
в учебнике YoYoGames.

## Переменные экземпляра

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

Но как создается переменная экземпляра? Ну, вы создаете новые переменные,
просто присваивая им значение,
как показано в этом небольшом примере (это называется объявлением переменной):

```cpp
potions = 12;
life = 100;
name = "Jock MacSweeney";
strength = 5.5;
armour = -2;
```

Как видишь, нужно только задать имя и присвоить значение.

Больше о
[переменных экземпляра](https://manual-ru.yoyogames.com/GameMaker_Language/GML_Overview/Variables/Instance_Variables.htm)
в учебнике YoYoGames.

## Глобальные переменные

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

Как и локальные переменные, глобальные переменные должны быть объявлены
с использованием идентификатора, но в отличие от локальной переменной,
глобальная переменная остается в памяти до конца игры.

```cpp
global.food = 5;
```

Мы объявляем переменную `food`, написав сначала `global.`, чтобы сообщить GameMaker,
что эта переменная теперь имеет глобальную область применения. 

Больше о
[глобальных переменных](https://manual-ru.yoyogames.com/GameMaker_Language/GML_Overview/Variables/Global_Variables.htm)
в учебнике YoYoGames.

