Как сделать переменную в Construct 3

Переменная в Construct 3 создаётся через контекстное меню в редакторе событий: правый клик по свободной области листа событий → пункт Add global variable — после чего откроется диалог с полями имени, типа и начального значения. Это базовая операция, без которой не обходится ни один проект: счёт очков, здоровье персонажа, количество патронов — всё это хранится именно в переменных.

В конструкторе есть три разновидности переменных: глобальные, локальные и переменные экземпляра (instance variables). Каждая из них решает свою задачу, и выбор неправильного типа — частая причина ошибок у новичков. Ниже разберём создание каждого вида, отличия между ними и типичные сценарии использования.

Создание глобальной переменной

Глобальная переменная доступна из любого события проекта. Чтобы её добавить, откройте нужный лист событий (Event sheet) и кликните правой кнопкой мыши по пустой области. В появившемся меню выберите Add global variable. Либо нажмите сочетание клавиш V — оно вызывает тот же диалог.

В окне настройки укажите три параметра: имя (только латиница, без пробелов — например, score или playerHealth), тип и начальное значение. После нажатия OK переменная появится в верхней части листа событий в виде отдельной строки, которую можно редактировать двойным кликом.

☑️ Создание глобальной переменной

Выполнено: 0 / 5

Типы данных переменных

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

ТипЧто хранитПример значенияТипичное применение
NumberЧисла, целые и дробные100, 3.5Очки, здоровье, скорость
TextСтрока символов"Player1"Имя игрока, сообщения
BooleanЛогическое значениеTrue / FalseФлаги: «уровень пройден», «пауза»
StaticОпция постоянстваЗначение не сбрасывается при рестарте

Флажок Static в диалоге означает, что переменная сохранит своё значение между перезапусками уровня. Если флажок снят, при событии Restart layout переменная вернётся к начальному значению.

⚠️ Внимание: при удалении переменной все события и действия, которые её используют, тоже удаляются из проекта автоматически. Перед удалением проверьте, где переменная задействована — проще всего через поиск по имени в редакторе.

Локальные переменные и их отличия

Локальная переменная добавляется так же — правый клик → Add local variable, — но только внутри группы событий или под другим событием. Она видна исключительно в пределах своей области: события вне группы её не «увидят».

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

📊 Какой тип переменных вы используете чаще всего?
Глобальные
Локальные
Переменные экземпляра
Использую все три типа

Переменные экземпляра (Instance Variables)

Третий вид переменных привязан не к листу событий, а к объекту. Выделите спрайт в редакторе уровня или в панели проекта, затем в панели свойств слева найдите раздел Instance variables и нажмите Add / Edit → значок плюса. Откроется знакомый диалог: имя, тип, начальное значение.

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

  • 🎯 Здоровье и урон отдельных врагов
  • ⏱️ Индивидуальные таймеры и кулдауны способностей
  • 🚪 Состояние объектов: открыта дверь или закрыта
  • 🏃 Текущая скорость конкретного персонажа

Как изменять и читать переменные в событиях

Работа со значениями происходит через действия объекта System. Добавьте действие и выберите один из вариантов: Set value — присвоить новое значение, Add to — прибавить число, Subtract from — вычесть. Для булевых переменных доступно Toggle boolean — переключение между True и False.

Проверка значений выполняется через условия: Compare variable в объекте System позволяет сравнить переменную с числом, текстом или другой переменной. Типичная связка для счёта очков выглядит так:

Событие: Player → On collision with Coin

Действие: System → Add to → score → 1

Действие: Coin → Destroy

Типичные ошибки новичков

Первая частая проблема — использование кириллицы или пробелов в имени. Редактор не даст сохранить такое имя, поэтому сразу придерживайтесь стиля playerHealth или player_health. Вторая ошибка — попытка обратиться к локальной переменной извне её группы: её просто не будет в списке автодополнения.

  • 🔤 Имя содержит пробелы или русские буквы — используйте только латиницу
  • 📉 Попытка прибавить число к текстовой переменной — типы должны совпадать
  • 🔄 Забытый флажок Static — значение сбрасывается при рестарте уровня
  • 👥 Ожидание общего значения у instance variable — у каждой копии объекта оно своё
⚠️ Внимание: действие Reset global variables в объекте System возвращает все глобальные переменные к начальным значениям. Не путайте его с Restart layout — это разные механизмы, и их комбинация может неожиданно обнулить прогресс игрока.
Как организовать много переменных

Когда переменных становится больше десятка, группируйте их по смыслу с помощью комментариев в листе событий. Альтернатива — хранить связанные данные в объекте Dictionary или массиве Array: они позволяют держать наборы значений под одним именем и удобны для инвентаря или таблиц рекордов.

Практический пример: здоровье игрока

Соберём простую систему здоровья. Создайте глобальную переменную health типа Number со значением 100. Добавьте событие столкновения игрока с врагом, в котором вычитается урон, и отдельное условие проверки гибели персонажа:

Событие: Player → On collision with Enemy

Действие: System → Subtract from → health → 25

Событие: System → Compare variable → health ≤ 0

Действие: Player → Destroy

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

Часто задаваемые вопросы

Можно ли изменить тип переменной после создания?

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

Чем глобальная переменная отличается от переменной экземпляра?

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

Почему переменная сбрасывается при переходе на другой уровень?

Возможная причина — снятый флажок Static в настройках переменной либо вызов действия Reset global variables в событиях. Глобальные переменные с включённым Static сохраняют значение между уровнями.

Как вывести значение переменной на экран в игре?

Добавьте объект Text и в событии Every tick задайте действие Set text со значением переменной. Для склейки текста и числа используйте амперсанд: "HP: " & health.

Есть ли горячая клавиша для создания переменной?

Да, в редакторе событий нажатие клавиши V открывает диалог добавления глобальной переменной. Это быстрее, чем поиск пункта в контекстном меню.