В Unity всё начинается с GameObject — это как кирпичик, из которого строится вся игра. Персонажи, враги, кнопки, пули, деревья, даже пустой воздух со скриптом — всё это геймобъекты.
Сам по себе геймобъект — просто контейнер. Он не двигается, не мигает и не звучит, пока ты не скажешь ему, что делать. А сказать можно через код.
В этом уроке ты узнаешь, как сохранять объекты в переменные, как включать и выключать их в игре, и как сделать так, чтобы они начали слушаться тебя. Шаг за шагом — без спешки.
Чтобы добавить в сцену что-то новое, нужно создать GameObject. Это можно сделать вручную в редакторе: нажми правой кнопкой мыши в иерархии (Hierarchy) → Create Empty или выбери один из готовых шаблонов, например 3D Object → Cube или 2D → Sprite.
Каждый GameObject имеет имя — по нему ты легко
узнаешь его в списке объектов. Дай ему понятное название:
Player
, Enemy
, Fireball
— чтобы
потом не путаться.
Даже пустой объект всё равно не совсем пуст: у него всегда есть Transform — это основной компонент, без которого объект не может существовать. Transform отвечает за позицию, поворот и масштаб объекта в мире.
Если ты видишь объект в сцене — у него есть Transform. Даже если ты не видишь — он всё равно там. Это как координаты на карте: без них объект не знает, где он находится.
💡 Unity умеет автоматически создавать GameObject,
если ты, например, просто перетащишь спрайт в сцену. Она сразу создаст
новый объект, добавит к нему нужные компоненты (например,
SpriteRenderer
) и подстроит Transform. Это быстрый способ
начать — но внутри всё равно будет тот же геймобъект.
💡 Ты можешь создавать объекты и прямо из кода — но сначала лучше разобраться с тем, как они устроены вручную.
Чтобы управлять объектом из кода — нужно сохранить ссылку на него в переменную. Это как протянуть невидимую ниточку от скрипта до объекта в сцене.
Для этого мы объявляем переменную типа GameObject
. А
чтобы она появилась в редакторе Unity и её можно было назначить
вручную — перед ней нужно написать слово public
.
После этого в инспекторе (Inspector) ты увидишь новое поле под скриптом. Просто перетащи туда нужный объект из сцены — и теперь скрипт сможет с ним работать.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Публичная переменная — её можно увидеть и назначить в редакторе
public GameObject player;
// Start вызывается один раз при запуске объекта
void Start()
{
// Здесь можно, например, отключить объект при старте
// player.SetActive(false);
}
// Update вызывается каждый кадр
void Update()
{
// Здесь можно управлять объектом во время игры
}
}
💡 player.SetActive(false)
— это один из методов Unity,
который позволяет включать и выключать объект. Таких методов много, и
они помогают управлять состоянием и поведением объектов прямо из кода.
О том, как работают эти команды и что ещё умеет
Unity API, мы подробно поговорим в
9‑м уроке.
Player
, куда можно перетащить другой GameObject из
сцены.
💡 public
делает переменную доступной снаружи — именно
поэтому Unity умеет показывать её в редакторе. Есть и другой способ —
с [SerializeField]
, но о нём мы поговорим позже.
Иногда переменная нужна только внутри скрипта — тогда
public
писать не обязательно. Можно оставить её
приватной (по умолчанию или явно с
private
) и задать значение прямо в коде, без редактора.
using UnityEngine;
public class CSharpScript : MonoBehaviour
{
// Приватная переменная — не видна в редакторе, но доступна внутри скрипта
private GameObject player;
// Start вызывается один раз при запуске объекта
void Start()
{
// Ищем объект с тегом "Player" и сохраняем его в переменную
player = GameObject.FindWithTag("Player");
}
// Update вызывается каждый кадр
void Update()
{
}
}
В следующем уроке мы поговорим о компонентах геймобъекта — тех самых "внутренностях", которые делают его видимым, двигающимся или реагирующим на мир. Узнаем, как получать доступ к этим компонентам из кода и управлять ими по своему желанию.