Unity Start: Создание первой 3D-игры с нуля

Практический курс для начинающих, охватывающий установку движка, основы C#, работу с физикой и создание полноценного билда игры. Программа основана на актуальных дорожных картах и методиках обучения [netology.ru](https://netology.ru/programs/po-tu-storonu-igry-s-unity), [dtf.ru](https://dtf.ru/gamedev/3725770-dorozhnaya-karta-unity-razrabotchika-2025).

1. Знакомство с Unity: установка Hub, интерфейс редактора и создание проекта

Знакомство с Unity: установка Hub, интерфейс редактора и создание проекта

Добро пожаловать в курс «Unity Start». Вы сделали первый шаг к профессии разработчика игр. Unity — это не просто программа, а комплексная экосистема, позволяющая создавать интерактивные проекты для более чем 20 платформ: от мобильных телефонов и ПК до консолей и VR-шлемов.

В этой статье мы подготовим рабочее место, разберем структуру движка и создадим фундамент для вашей первой 3D-игры.

Экосистема Unity: Hub и Editor

Новички часто путают саму программу для разработки и её загрузчик. Важно различать два понятия:

  • Unity Hub — это менеджер проектов и версий. Он хранит список ваших игр и позволяет устанавливать разные версии движка на один компьютер.
  • Unity Editor — это сам редактор, среда разработки, где происходит создание игры.
  • Шаг 1: Установка Unity Hub

    Первым делом необходимо скачать управляющую программу.

  • Перейдите на официальный сайт unity.com.
  • Нажмите кнопку Download Unity Hub.
  • Установите и запустите приложение.
  • Создайте Unity ID (аккаунт), если у вас его нет, и авторизуйтесь в Hub.
  • Шаг 2: Установка редактора (Unity Editor)

    Внутри Unity Hub перейдите во вкладку Installs (Установки). Здесь вы увидите список доступных версий. Нажмите кнопку Install Editor.

    Вы увидите список версий. Критически важно выбрать правильную:

    * LTS (Long Term Support) — версии с долгосрочной поддержкой. Они стабильны, в них исправлены основные ошибки. Для обучения и коммерческой разработки всегда выбирайте LTS. * Tech Stream — бета-версии с новыми, но экспериментальными функциями. Они могут быть нестабильны.

    Выберите последнюю доступную версию с пометкой LTS (например, 2022.3 LTS или новее) и нажмите Install.

    Выбор модулей

    При установке вам предложат добавить модули (Add modules). Для начала вам понадобятся:

    * Microsoft Visual Studio Community (или поддержка Visual Studio Code) — это среда для написания кода. Без неё вы не сможете программировать логику игры. * Documentation — локальная справка (по желанию).

    Если вы планируете в будущем выпускать игру на Android или iOS, соответствующие модули (Android Build Support и т.д.) можно будет доустановить позже в любой момент.

    Создание первого проекта

    Когда редактор установлен, перейдите во вкладку Projects в Unity Hub.

  • Нажмите кнопку New project (Новый проект) в правом верхнем углу.
  • В центре экрана выберите шаблон (Template). Так как наш курс посвящен 3D, выберите 3D Core (или просто 3D).
  • > Шаблоны помогают быстрее начать работу, предоставляя базовые настройки и ассеты. > > Sky.pro
  • В поле Project Name задайте имя (на английском языке, без пробелов, например MyFirstGame).
  • В поле Location выберите папку для хранения. Путь к проекту не должен содержать кириллицу (русские буквы), иначе возможны ошибки при компиляции.
  • Нажмите Create project.
  • Первый запуск может занять несколько минут — Unity распаковывает библиотеки и создает структуру файлов.

    Интерфейс Unity: «Великолепная пятерка» окон

    После загрузки вы увидите интерфейс редактора. Он может показаться сложным, но он состоит из пяти основных окон, каждое из которых выполняет свою функцию. Вы можете менять их расположение, перетаскивая за вкладки.

    1. Hierarchy (Иерархия)

    Окно слева (по умолчанию). Это список всех объектов, которые находятся в данный момент на уровне (сцене). Если объекта нет в Иерархии, его нет в игре. Здесь выстраивается структура «Родитель — Ребенок» (Parenting), когда одни объекты вкладываются в другие.

    2. Scene View (Сцена)

    Самое большое окно в центре. Это ваш «строительный полигон». Здесь вы визуально расставляете объекты, двигаете их, вращаете и настраиваете уровень. То, что вы видите в окне Scene, — это взгляд разработчика, а не игрока.

    Навигация в сцене: * Зажмите Правую кнопку мыши (ПКМ) и двигайте мышью, чтобы осмотреться. * Зажав ПКМ, используйте клавиши W, A, S, D для полета по сцене (как в шутерах). * Нажмите колесико мыши, чтобы перемещаться плоско (панорамирование).

    3. Game View (Игра)

    Обычно находится во вкладке рядом со Scene. Это окно показывает игру так, как её увидит игрок через камеру. Здесь нельзя редактировать объекты, но можно тестировать игровой процесс.

    4. Inspector (Инспектор)

    Окно справа. Это панель свойств. Когда вы выделяете любой объект в Иерархии или Сцене, в Инспекторе отображается вся информация о нем: координаты, цвет, физические параметры и прикрепленные скрипты. Все настройки конкретного объекта делаются здесь.

    5. Project (Проект)

    Окно снизу. Это ваш «склад» или файловый менеджер. Здесь лежат все файлы (ассеты): 3D-модели, текстуры, звуки, скрипты. Важно понимать различие: * Файл лежит в окне Project = он есть в библиотеке, но не обязательно используется в игре. * Файл перетащили в Hierarchy = он стал объектом игрового мира.

    Базовые манипуляции с объектами

    Создадим первый объект. В окне Hierarchy нажмите правой кнопкой мыши на пустое место -> 3D Object -> Cube. В центре сцены появится куб.

    Трансформация (Transform)

    Любой объект в Unity обязательно имеет компонент Transform (виден в Инспекторе). Он описывает положение, поворот и размер объекта в трехмерном пространстве.

    Позиция объекта в 3D задается вектором:

    где — вектор позиции, — координата по горизонтали (влево/вправо, красная ось), — координата по вертикали (вверх/вниз, зеленая ось), — координата глубины (вперед/назад, синяя ось).

    Для управления объектами используются инструменты на верхней панели (Toolbar), но профессионалы используют горячие клавиши:

  • Q (Hand Tool) — режим просмотра (двигать сцену, не объекты).
  • W (Move Tool) — перемещение объекта. Появляются стрелки (Гизмо), за которые можно тянуть.
  • E (Rotate Tool) — вращение объекта.
  • R (Scale Tool) — изменение размера (масштабирование).
  • Глобальные и локальные координаты

    При вращении объекта важно понимать разницу между осями. Если вы повернете куб на 45 градусов, его «личное» направление «вверх» перестанет совпадать с мировым «вверх».

    * Global — оси выровнены по миру (Y всегда строго вверх). * Local — оси выровнены по объекту (Y смотрит туда, куда направлена «макушка» объекта).

    Переключатель Global/Local находится на верхней панели инструментов.

    Организация проекта

    Порядок в файлах — залог успешной разработки. В окне Project всегда создавайте папки для разных типов файлов. Нажмите ПКМ в окне Project -> Create -> Folder.

    Рекомендуемая базовая структура: * _Scripts (для кода) * Materials (для цветов и текстур) * Prefabs (для заготовок объектов) * Scenes (для уровней)

    > Unity — это мощная платформа для разработки игр, которая позволяет создавать игры для различных платформ... Благодаря поддержке C# и возможности создания пользовательских компонентов, Unity позволяет разработчикам легко расширять функциональность. > > Хабр

    Итоги

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

  • Unity Hub управляет версиями, Unity Editor создает игры. Используйте LTS версии для стабильности.
  • Интерфейс состоит из 5 главных окон: Hierarchy (список объектов), Scene (конструктор), Game (вид из глаз игрока), Inspector (свойства), Project (файлы).
  • Навигация в 3D-пространстве осуществляется по трем осям: X (красная), Y (зеленая), Z (синяя).
  • Основные инструменты манипуляции — это перемещение (W), вращение (E) и масштабирование (R).
  • Путь к проекту не должен содержать кириллицу во избежание технических ошибок.
  • 2. Основы C# в Unity: переменные, методы и написание первых скриптов

    Основы C# в Unity: переменные, методы и написание первых скриптов

    В предыдущей статье мы научились ориентироваться в интерфейсе Unity и создали свой первый проект. Однако, пока наша сцена статична: куб просто висит в воздухе. Чтобы вдохнуть жизнь в игровые объекты — заставить их двигаться, реагировать на нажатия клавиш или считать очки — нам понадобится код.

    Unity использует язык программирования C# (читается как «Си-шарп»). Это мощный, строго типизированный язык, который является стандартом в индустрии разработки игр.

    В этой статье мы напишем ваш первый скрипт, разберем, что такое переменные, и узнаем, как Unity выполняет команды.

    Создание первого скрипта

    Скрипт в Unity — это обычный текстовый файл с расширением .cs, который содержит инструкции для движка. Чтобы создать его:

  • В окне Project перейдите в папку _Scripts (которую мы создали в прошлом уроке).
  • Нажмите правой кнопкой мыши (ПКМ) на пустое место Create C# Script.
  • ВАЖНО: Сразу же введите имя скрипта, например MyFirstScript. Нажмите Enter.
  • > Лучше ввести новое имя скрипта сразу после создания, чем изменять его потом. Имя, которое вы введете, будет использовано, чтобы создать начальный текст в скрипте. > > Unity Technologies

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

    Дважды кликните по созданному файлу. Он откроется в редакторе кода (обычно это Visual Studio).

    Структура скрипта: анатомия файла

    Когда вы откроете файл, вы увидите базовую заготовку. Давайте разберем её построчно:

  • Библиотеки (using ...): Первые строки говорят программе, какие наборы команд мы будем использовать. using UnityEngine; — самая важная строка, она дает доступ к функциям движка (физике, 3D-объектам и т.д.).
  • Класс (public class ...): Это контейнер для всего вашего кода. Обратите внимание: имя класса (MyFirstScript) обязано совпадать с именем файла.
  • Наследование (: MonoBehaviour): Это ключевая особенность Unity. MonoBehaviour превращает обычный код в компонент, который можно «навесить» на игровой объект (куб, персонажа, камеру).
  • Переменные: хранение данных

    Переменные — это «коробки», в которых мы храним информацию: здоровье игрока, скорость бега, имя персонажа или количество патронов.

    В C# мы обязаны сначала указать тип данных, а затем имя переменной. Синтаксис выглядит так:

    Модификатор_доступа Тип_данных Имя_переменной = Значение;

    Основные типы данных

    Для начала вам понадобятся четыре основных типа:

  • int (Integer) — целые числа. Используются для количества предметов, очков, жизней.
  • * Пример: int health = 100;
  • float — числа с плавающей точкой (дробные). Используются для координат, скорости, таймеров.
  • * Пример: float speed = 5.5f; * Важно: В конце дробного числа в C# обязательно нужно ставить букву f, иначе компилятор примет его за другой тип данных (double).
  • string — текст. Должен быть обернут в двойные кавычки.
  • * Пример: string playerName = "Hero";
  • bool (Boolean) — логический тип. Может быть только true (истина) или false (ложь). Используется для переключателей (жив/мертв, включен/выключен).
  • * Пример: bool isAlive = true;

    Магия Inspector: Public vs Private

    Одна из самых удобных функций Unity — возможность менять значения переменных прямо в редакторе, не заходя в код.

    * private (по умолчанию): Переменная видна только внутри скрипта. Unity её не показывает. * public: Переменная становится доступной другим скриптам и отображается в окне Inspector.

    Давайте напишем код. Вставьте эти строки внутрь класса (до void Start):

    Сохраните файл (Ctrl+S). Вернитесь в Unity. Теперь, если вы выберете объект с этим скриптом, вы увидите эти поля в Инспекторе и сможете менять их значения мышкой.

    Методы: действия и события

    Если переменные — это существительные (данные), то методы — это глаголы (действия). В скрипте по умолчанию уже есть два главных метода:

    1. Start()

    Этот метод запускается один раз в тот момент, когда объект появляется в игре (обычно при запуске сцены). Здесь мы задаем начальные настройки.

    2. Update()

    Этот метод запускается каждый кадр. Если ваша игра работает с частотой 60 кадров в секунду (60 FPS), то код внутри Update выполнится 60 раз за одну секунду.

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

    где — путь, — скорость, — время.

    В контексте Update, если мы хотим двигать объект равномерно, мы должны учитывать время, прошедшее с последнего кадра. Если этого не сделать, на мощных компьютерах (где кадров больше) игра будет работать быстрее, чем на слабых.

    Практика: «Оживление» консоли

    Давайте объединим знания и напишем скрипт, который приветствует нас и считает кадры.

  • Откройте ваш MyFirstScript.
  • Приведите код к следующему виду:
  • Сохраните файл (Ctrl+S).
  • Как запустить скрипт?

    Новички часто совершают одну и ту же ошибку: пишут код, нажимают Play, но ничего не происходит. Код не будет работать, пока скрипт не прикреплен к объекту на сцене.

  • Вернитесь в Unity.
  • Выберите Cube (или любой другой объект) в окне Hierarchy.
  • Перетащите файл MyFirstScript из окна Project прямо на объект в иерархии или в окно Inspector выбранного объекта.
  • Теперь в Инспекторе куба вы увидите компонент My First Script.
  • Нажмите кнопку Play (треугольник вверху по центру).
  • Окно Console

    Внизу экрана (или во вкладке Console) вы увидите сообщение: "Добро пожаловать, Игрок".

    Попробуйте остановить игру (нажмите Play еще раз), изменить в Инспекторе поле Player Name на свое имя и запустить игру снова. Сообщение изменится. Это демонстрирует силу переменных public: вы меняете логику игры, не переписывая код.

    Арифметика в коде

    C# позволяет выполнять математические операции. Это основа любой игровой логики (урон, лечение, подсчет очков).

    Допустим, мы хотим рассчитать итоговый урон. Формула может выглядеть так:

    где — итоговый урон, — базовый урон оружия, — множитель (например, критический удар).

    В коде это выглядит так:

    Основные операторы: * + (сложение) * - (вычитание) (умножение) * / (деление)

    Итоги

    Сегодня мы написали первый код и заставили Unity «говорить» с нами через консоль.

  • Скрипт — это компонент. Чтобы он заработал, его нужно перетащить на объект в сцене (наследуется от MonoBehaviour).
  • Переменные хранят данные. int — для целых чисел, float (с суффиксом f) — для дробных, string — для текста, bool — для переключателей.
  • Модификатор public делает переменную видимой в Инспекторе Unity, позволяя геймдизайнеру настраивать баланс без программиста.
  • Метод Start() выполняется один раз при запуске, а Update() — каждый кадр (постоянно).
  • Команда Debug.Log() используется для вывода информации в консоль, что критически важно для проверки работы кода.