Чтобы управлять объектами в Godot, нужно уверенно владеть переменными, функциями и правилами видимости. Эти инструменты определяют, где хранятся данные, кто может к ним обращаться и как организовано поведение нод. Разберём всё по порядку — подробно и с практическими примерами.

Chatgpt image 26 нояб. 2025 г., 19 46 46

Переменные: основа состояния объекта

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

var speed = 180
var name = "Goblin"
var direction = Vector2.RIGHT

Если игра растёт, полезно ограничивать тип данных:

var speed: float = 180.0

Так код становится предсказуемее. Ошибки ловятся раньше, а производительность повышается.

Модификатор onready: инициализация в нужный момент

Когда переменной нужно присвоить значение после появления ноды в сцене, используют onready. Это важно для элементов, которые существуют только после загрузки дерева.

onready var sprite = $Sprite2D

Используйте onready, если переменная зависит от положения ноды в дереве или других компонентов сцены.

Константы: фиксированные значения

Константы вводят через const. Это данные, которые вы не хотите менять в процессе игры: лимиты, параметры баланса, ключевые значения.

const MAX_SPEED = 500
const DAMAGE_MULTIPLIER = 1.2

Попытка изменить константу вызовет ошибку. Это защищает проект от случайных изменений.

Функции: что именно делает объект

Функция описывает действие. Например, обработку урона, перемещение или взаимодействие с игроком.

func take_damage(amount):
    health -= amount

Функция может возвращать результат:

func is_dead() -> bool:
    return health <= 0

Аргументы и значения по умолчанию

Функции легко адаптировать под разные ситуации, добавляя аргументы:

func move_to(point: Vector2, speed := 200):
    position = position.move_toward(point, speed)

📢 Подписывайтесь на наш Telegram-канал.

Там вы найдете анонсы обучающих статей и видео, готовый код для ваших проектов и увлекательные курсы. Ничего лишнего — только практика, вдохновение и развитие.

👉 https://t.me/codelab_channel

Если значение не передано — используется то, что указано после :=.

Жизненный цикл ноды: встроенные методы

Godot автоматически вызывает некоторые функции. Это помогает реагировать на изменения сцены.

  • _ready() — нода готова и находится в дереве.
  • _process(delta) — выполнение каждый кадр.
  • _physics_process(delta) — выполнение фиксированными интервалами.
func _ready():
    print("Нода загружена")

func _process(delta):
    rotation += 1.5 * delta

Используйте _physics_process для движения, связанного с физикой, чтобы избежать дрожания и пропусков кадров.

Области видимости: кто видит переменную

У переменных есть три уровня видимости:

  • локальный — доступен только внутри функции;
  • внутренний (член класса) — доступен всем методам этого скрипта;
  • глобальный — создан через автозагрузку.

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

Существуют только в пределах функции:

func attack():
    var dmg = 15
    print(dmg)

Внутренние переменные

Объявляются вне функций и принадлежат объекту:

var health = 100

func heal(amount):
    health += amount

Глобальные переменные через Autoload

Их используют для данных вроде прогресса игры, настроек, глобальных флагов.

Пример обращения:

GameState.score += 1

Контроль доступа: setget

Если вам нужно контролировать изменение переменной, используйте аксессоры:

var health: int = 100 setget _set_health

func _set_health(v):
    health = clamp(v, 0, 100)

Так вы создаёте “защитный барьер” вокруг переменной.

Статические функции: независимые инструменты

Статические методы не требуют создания объекта. Они удобны для утилит или вычислений:

static func lerp_fast(a, b, t):
    return a + (b - a) * t

Статика не имеет доступа к переменным экземпляра — только к параметрам и другим статическим данным.

Итоги статьи

Мы разобрали ключевые механизмы, которые формируют структуру любого скрипта в GDScript:

  • var — переменные объекта;
  • onready — инициализация после загрузки дерева;
  • const — неизменяемые данные;
  • func — логика поведения;
  • аргументы и значения по умолчанию — гибкость функций;
  • _ready, _process, _physics_process — точки входа в игровой цикл;
  • области видимости — порядок организации данных;
  • setget — контроль за изменением переменных;
  • static — функции без привязки к объекту.

Комментарии

0

Без регистрации и смс