Unity Editor, сцена и иерархия
Главные окна редактора, GameObject и Transform — DOM 3D-мира.
Editor: с чего вы будете смотреть на мир
Unity Editor — это IDE для контента. Несколько окон-доков, которые можно перетаскивать и сохранять как layout. Ключевые из коробки:
- Scene View — 3D-вьюпорт редактора. Здесь вы летаете и расставляете объекты.
- Game View — то, что увидит игрок: рендер с активной камеры.
- Hierarchy — дерево объектов в текущей сцене.
- Project — файлы проекта (ассеты): модели, текстуры, скрипты, материалы.
- Inspector — свойства выбранного объекта. Здесь вы редактируете компоненты.
- Console — лог, ошибки, варнинги (
Debug.Log,Debug.LogError).
DevTools браузера: Elements, Console, Sources, Network. Inspector браузера — это про CSS-стили DOM-элемента.
Hierarchy — это “Elements” (дерево сцены). Inspector — это “Styles”, только редактирует компоненты на GameObject. Project — это файловое дерево “Sources”.
Сцена (Scene)
Сцена — это файл .unity с описанием конкретного уровня или экрана: какие GameObject в нём,
с какими компонентами и значениями. Загружаются сцены через SceneManager.LoadScene. Аналог
страницы (route) в SPA.
В современной разработке часто используют аддитивную загрузку: одна базовая сцена с UI и менеджерами, поверх неё подгружаются сцены-уровни.
using UnityEngine.SceneManagement;
SceneManager.LoadScene("Level_01"); // полная замена
SceneManager.LoadScene("HUD", LoadSceneMode.Additive); // поверх текущей
GameObject — главный примитив
GameObject — пустой контейнер. Сам по себе он не делает ничего: ни рисуется, ни движется. Всё
поведение даётся ему компонентами. У GameObject всегда есть один обязательный компонент —
Transform (или RectTransform для UI).
DOM-элемент <div>. Сам по себе пустой, но с CSS-классами и атрибутами получает поведение
(анимации, позиционирование, обработчики событий).
GameObject “Player”. Добавили CharacterController — он движется как капсула. Добавили
MeshRenderer — стал виден. Добавили ваш PlayerInput.cs — реагирует на ввод.
Transform — 3D-позиция, поворот и масштаб
Transform хранит локальные значения относительно родителя:
localPosition—Vector3 (x, y, z), метрыlocalRotation—Quaternion(внутри),localEulerAnglesдля удобного представления в градусахlocalScale—Vector3 (x, y, z), множители
И производные мировые: position, rotation, eulerAngles. Если объект — дочерний, мировые
значения вычисляются цепочкой матриц трансформации.
transform.localPosition = new Vector3(0, 1.5f, 0); // 1.5 м вверх от родителя
transform.Rotate(0, 90f, 0); // повернуть на 90° вокруг Y
transform.localScale = Vector3.one * 2f; // ×2 по всем осям
Если родитель отмасштабирован неравномерно (например, (2, 1, 1)), а ребёнок повёрнут, мировой
масштаб ребёнка станет “сдвинутым” (skew) — Unity показывает предупреждения в Inspector. Старайтесь
не мешать non-uniform scale с поворотами в иерархии.
Координатная система
Unity использует левостороннюю систему координат:
- +X — вправо
- +Y — вверх (важно для тех, кто привык к Z-up в Blender/3ds Max)
- +Z — вперёд
Один Unit по умолчанию = 1 метр. Это влияет на физику: гравитация — 9.81 м/с² по умолчанию. Если ваши модели импортированы в “сантиметровом” масштабе, физика будет вести себя странно. Поправляйте Scale Factor в импортере модели.
Иерархия и родительство
Сделав GameObject ребёнком другого, вы привязываете его Transform к родительскому. Ребёнок наследует позицию, поворот и масштаб. Это удобный приём для:
- Группировок (папки в иерархии): пустой GameObject как контейнер для коллекции врагов.
- Логических связей: рука → ладонь → меч; двигаете руку — меч следует.
- Префабов: модель персонажа со скелетом — это иерархия Transform’ов с компонентами на нужных узлах.
// Сделать `child` ребёнком `parent`
child.transform.SetParent(parent.transform, worldPositionStays: true);
// Отвязать
child.transform.SetParent(null);
Параметр worldPositionStays определяет, сохранится ли мировая позиция при перепривязке. По умолчанию
true — Unity пересчитает localPosition, чтобы объект остался “на месте”.
В следующем разделе разберёмся, как именно вы пишете поведение — через MonoBehaviour и его жизненный цикл.