🎮⛰️ Дорожная карта Unity-разработчика 2025: с нуля до джуна

Подробная и актуальная на 2025-й год дорожная карта со всеми знаниями, необходимыми для начинающего Unity-разработчика. От основ C# до работы с физикой и сторонними SDK. В конце статьи — полезные ссылки и рекомендации от автора!

🎮⛰️ Дорожная карта Unity-разработчика 2025: с нуля до джуна
Denis Litvinets
Делаю игры и пишу про игры

1. Основы C#

Самое важное для любого разработчика – научиться писать на целевом языке. В случае с Unity-разработкой таким языком является C#.

C# — объектно-ориентированный язык общего назначения, разработанный Microsoft. Он активно используется в бэкенд-разработке, десктоп-разработке и геймдеве. Помимо этого на C# можно разрабатывать мобильные приложения и даже заниматься машинным обучением, но нас это не интересует. Все внимание мы уделим именно разработке игр.

Небольшой дисклеймер по поводу визуального программирования:

  1. Да, вы можете разрабатывать игры на Unity без (или практически без) кода. Unity поддерживает визуальный скриптинг и имеет несколько библиотек, которые позволяют разрабатывать логику в визуальных редакторах.
  2. Нет, визуальный скриптинг не является полноценной заменой C#, так как имеет ряд ограничений и сложен в поддержке. Не зная языка программирования, вы не сможете устроиться на работу, коммерческие компании практически не используют визуальное программирование в Unity.

С этим разобрались, теперь перейдем к C#

1.1. Знакомство с языком и базовый синтаксис

  • Переменные и типы данных

В C# существует несколько базовых типов (int, float, bool, string, char и т. д.). Важно понять разницу между типами-значениями (Value Types) и типами-ссылками (Reference Types). Где они хранятся, как к ним обеспечивается доступ.

  • Операторы

Арифметические операторы (+, -, *, /, %), логические (&&, ||, !), операторы сравнения (==, !=, >, < и т. д.) и операторы присваивания (=, +=, -= и т. д.).

  • Управляющие конструкции

if/else, switch/case, циклы (for, while, do-while, foreach). Здесь закладываются основы логики, которые впоследствии пригодятся при создании игровой логики.

На этом этапе вы уже освоили базовый синтаксис, научились компилировать небольшие консольные программы и понимать, как код на C# превращается в исполняемую программу. Хорошим первым проектом может стать консольный калькулятор, который позволит выполнять базовые математические операции с числами, которые вводит пользователь.

1.2. Методы

На этом этапе надо разобраться, что из себя представляют методы, зачем они вообще нужны.

Что такое сигнатура метода, принимаемые в метод аргументы (в том числе и необязательные), возвращаемые значения. Понятие рекурсии. Модификаторы ref и out, зачем нужны и чем друг от друга отличаются. Для их понимания очень важно разбираться в типах данных.

1.3. Объектно-ориентированное программирование (ООП)

ООП — основа при работе в Unity, без него никуда даже в проектах, написанных на ECS (Entity Component System). Здесь мы не будем рассматривать этот паттерн, он заслуживает отдельной статьи (или даже серии статей).

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

Далее вам следует изучить три столпа ООП:

  • Наследование

Абстрактные классы, отношения родительских и дочерних классов, абстрактные и виртуальные методы, модификатор доступа protected.

  • Полиморфизм

Виртуальные, абстрактные и sealed методы, переопределение методов в дочерних классах, перегрузка методов.

  • Инкапсуляция

Сокрытие деталей реализации, модификатор доступа private, использование свойств, что такое интерфейсы и зачем они нужны.

Также отдельно часто выделяют абстракцию, с ней вы тоже столкнетесь.

Очень важно разобраться с интерфейсами, что в них может быть, чем отличаются от абстрактных классов и зачем их вообще используют. Без практики это может быть достаточно сложно, поэтому придется много кодить.

1.4. Коллекции и работа с данными

Знать принципы работы и внутренне устройство, уметь работать и понимать разницу следующих коллекций:

  • Массивы (Array)
  • Списки и динамические массивы (List)
  • Словари (Dictionary)
  • Множества (HashSet)
  • Очереди (Queue)
  • Стеки (Stack)

Также важно уметь работать с LINQ (Language Integrated Query), так как это мощнейший и невероятно удобный инструмент для работы с данными, который можно встретить практически на каждом проекте.

1.5. Структуры

Какой тип данных, где хранятся, чем отличаются от классов, в каких ситуациях лучше использовать их, а в каких – классы. Также почитайте про подводные камни при их использовании и различные ограничения.

1.6. Делегаты, события, лямбда-выражения

  • Делегаты

Типы, которые указывают на методы. Позволяют вызывать метод через переменную. Важно понять, как они работают и в каких ситуациях используются, зачем нужны обертки над делегатами Action и Func, в чем их отличия.

  • События (Events)

Расширение делегатов, ключевое слово event, используется для подписки и отписки на определенные действия, очень распространены в разработке игр, так что must-have для изучения и понимания.

  • Лямбда-выражения

Анонимные функции часто используются в связке с LINQ и событиями

1.7. Исключения и их обработка

Блоки try, catch, finally.

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

1.8. SOLID

  • Single Responsibility – принцип единой ответственности
  • Open-Closed – принцип открытость закрытости
  • Liskov Substituition – принцип подстановки Барбары Лисков
  • Interface Segregation – принцип разделения интерфейсов
  • Dependency Inversion – принцип инверсии зависимостей

Знать определения принципов будет недостаточно. Надо уметь привести примеры из разработки, где вы применяли эти принципы, объяснять их важность, понимать, когда идеально след��вать этим принципам невозможно и что с этим делать.

1.9. Паттерны проектирования

Нужно знать определения и назначение самых популярных паттернов, их плюсы и минусы, уметь реализовывать в коде и на словах. Я могу выделить следующие паттерны:

  • Observer* и его встроенная реализация в C# через события
  • State* (сюда же Finite State Machine и Hierarchical FSM) и его использование в управлении как глобальным состоянием игры, так и более локальными вещами (в частности, искусственный интеллект)
  • Service Locator* и Dependency Injection*, в каких ситуациях использовать тот или другой
  • MVC*, MVP*, MVVM для работы с UI
  • Object Pool*
  • Entry Point*
  • Abstract Factory, Factory Method
  • Visitor
  • Command
  • Strategy
  • Decorator
  • Facade

Символом * отмечены те паттерны, которые (на мой субъективный взгляд) чаще других встречаются как в реальных проектах, так и на собеседованиях.

Также важно прочитать и запомнить официальные конвенции по написанию кода на C# от Microsoft (тык) и Unity (тык). Еще важнее придерживаться этих конвенций при разработке любых проектов, так как стиль написания кода – это первое, на что будет смотреть практически любой ревьюер.

Помимо всего вышеперечисленного стоит получить базовые знания об асинхронности (и ее реализации через UniTask) и обобщениях (Generics).

2. Работа в Unity

🎮⛰️ Дорожная карта Unity-разработчика 2025: с нуля до джуна

После освоения языка программирования нужно переходить к изучению игрового движка. Впрочем, этим можно (и даже желательно) заниматься и параллельно изучению C#. На каком именно этапе впервые открывать Unity — решать вам. Я бы посоветовал сразу после изучения ООП.

2.1. Архитектура Unity

На этом этапе вам надо ознакомиться с базовыми инструментами и концепциями движка:

  • Сцена (Scene) — файл, содержащий игровую локацию. В сцене размещаются объекты, из которых состоит игра
  • Рабочее окружение (Inspector, Console, Project, Hierachy, Game) — это основные окна в движке, с которыми вы будете взаимодействовать ежедневно
  • GameObject — базовый объект в Unity, на который навешиваются компоненты
  • Компоненты (Components) — скрипты, физические коллайдеры, рендереры, аудиоисточники и т. д. — все, что дает функциональность GameObject’ам
  • MonoBehaviour — базовый класс для всех скриптов, которые могут быть прикреплены к GameObject, предоставляет доступ к методам жизненного цикла игрового объекта

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

2.2. Программирование в контексте Unity, работа с Unity API

Далее вам следует начать разрабатывать свою первую игру! На этом этапе вы познакомитесь с важнейшими аспектами программирования в движке:

  • Методы жизненного цикла игровых сущностей

Изучите методы Awake, Start, OnEnable, Update, FixedUpdate, LateUpdate, OnDisable, OnDestroy. Вам надо знать порядок их вызова, для чего они используются и какую логику в них стоит размещать.

  • Система ввода

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

  • Корутины

Очень важный инструмент, который вы станете часто встречать в будущем. Нужно знать, как они работают, зачем используются и какие нюансы следует учитывать при работе с ними.

  • Scriptable Objects

Что это такое, для чего используются (а для чего использовать не рекомендуется), какой имеют жизненный цикл, какие у этого инструмента есть плюсы и минусы

  • PlayerPrefs

Те же самые требования к пониманию инструмента и области его использования

  • Системы сохранений

Для начала хватит сохранений в JSON, шифрования, дешифрования файла и привязки прогресса в SDK конкретных платформ (обсудим это далее)

2.3. Физика

🎮⛰️ Дорожная карта Unity-разработчика 2025: с нуля до джуна

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

Нужно будет уметь работать с методами, вызываемыми при физических взаимодействиях игровых объектов (OnCollisionEnter, OnTriggerEnter и т.д.).

Сюда же следует отнести работу с лучами и их пробрасыванием (Raycast). Что это, для чего используется, какие варианты рейкастов существуют, что такое LayerMask.

2.4. Визуал и звук

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

  • Камера

Отличия ортографической и перспективной камеры, стек камер, настройки рендеринга.

  • Освещение

Global Light, Area Light, Spot Light, виды освещения, запекание света, тени и способы оптимизации всего этого безобразия. Все на базовом уровне.

  • 3D-модели, текстуры и спрайты

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

  • Звук

Что такое Audio Source и как его настраивать в зависимости от конкретных требований, как правильно импортировать звуки в проект, как их проигрывать, что такое Audio Mixer и зачем он нужен.

  • Анимации

Как вообще работают и из чего состоят анимации в Unity: Animator, State Machine, Layers, Blend Tree, Transitions, Conditions, Animation Clips. Также надо будет знать, как из анимаций вызывать код и из кода проигрывать различные анимации.

  • Эффекты

Поначалу не так важно, но все же знать о существовании Particle System и Trail Renderer, а также их назначении, стоит.

  • Материалы и шейдеры

Хватит базовых знаний на уровне создания материала, осведомленности об основных крутилках и присвоении его игровым объектам

2.5. Работа с ресурсами

🎮⛰️ Дорожная карта Unity-разработчика 2025: с нуля до джуна

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

  • Папка Resources

Что это, зачем используется, какие плюсы и минусы

  • Asset Bundles и Addressables

Чем отличаются друг от друга и от папки Resources, в чем их преимущество. Надо иметь базовые навыки работы с Addressables. Asset Bundles сейчас гораздо менее популярны, так что о них можно будет просто знать.

  • Prefabs

Что это, зачем нужны, что такое Prefab Variant

Здесь же вспомним о системе сохранений и PlayerPrefs. Надо знать, как данные (например, файл с сохранением) загружаются и куда они сохраняются, как их можно хранить в облаке и где лежат PlayerPrefs.

2.6. User Interface (UI)

Также достаточно обширная тема. Здесь вы должны знать обо всех основных кирпичиках, из которых строится пользовательский интерфейс в Unity: Canvas, RectTransform, Image, Button, Layout Groups, Slider, Toggle, TextMeshPro и так далее.

Нужны навыки адаптивной верстки под экраны с разным соотношением сторон и достаточно глубокое понимание настроек, которые нам предоставляют UI-компоненты в Unity.

И не забываем про оптимизацию UI!

2.7. Сторонние SDK

Без подключения и настройки сторонних SDK не создать ни одной серьезной игры, так что вам надо будет научиться на базовом уровне работать с такими инструментами как Firebase, Unity Services, IAP, SDK разных магазинов.

2.8. Dependecy Injection (DI)

Теперь даже джуну без знания DI никуда. Надо будет понимать общую концепцию и смысл инъекции зависимостей, а также владеть хотя бы одним популярным фреймворком на базовом уровне (уметь создать инсталлер и прокинуть зависимость). Я лично рекомендую Zenject, так как он наиболее популярен.

2.9. Базовые навыки оптимизации

Как сжать размер сборки, как правильно импортировать файлы в проект, как оптимизировать UI и вызова какого кода в Update следует избегать — все эти знания также необходимы.

2.10. Дополнительные аспекты

Дополнительно ко всему вышеперечисленному я бы рекомендовал ознакомиться с библиотекой DOTween (очень популярный инструмент для анимаций UI и плавного изменения каких-либо значений) и возможностями написания своих расширений для Editor.

Еще было бы здорово, пусть и не необходимо, если бы у вас появился опыт завершения проекта и размещения где-нибудь. Пусть это будет даже не Google Play или App Store, хватит itch.io или Яндекс.Игр.

3. Итоги

Выглядит страшно, не правда ли? Столько всего нужно изучить, чтобы найти первую работу...

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

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

Во-вторых, вовсе не обязательно знать идеально все это, чтобы начинать искать работу. Вы можете выходить на рынок в тот момент, когда почувствуете в себе уверенность. Откликайтесь, ходите на собеседования, получайте отказы (или приглашения), набивайте шишки, становитесь круче и снова ходите на собеседования. Нет смысла месяцами сидеть над одной душной темой и пытаться вызубрить ее до идеального состояния. Вам нужно знать все эти темы ровно на том уровне, на котором их спрашивают на собеседованиях. И нет лучшего способа узнать этот уровень кроме как самостоятельного похода на эти самые собеседования. Не сидите за учебой дольше трех-четырех месяцев. Чем раньше начнете ходить по собеседованиям — тем быстрее устроитесь на первую работу. А уж там ваш рост будет экспоненциальным.

4. Полезные ссылки

И бонусом хочу оставить несколько классных бесплатных ресурсов, которые я рекомендую использовать при обучении:

  • Metanit — база по C#
  • #SimpleCode — база по C# в видеоформате
  • K-Syndicate — высочайший уровень кода и много бесплатных материалов
  • Илья Яковлев — классный канал с большим количеством гайдов по разработке игр на Unity
  • Code Monkey — достаточно низкий уровень кода, но зато есть множество уроков по разработке самых разных механик, хорошо использовать как вдохновение. Англоязычный канал.
  • git-amend — еще один англоязычный канал, но с контентом более высокого уровня
  • Официальный гайд от Unity по архитектуре игр с возможностью скачать книжку

Становись частью сообщества Unity-разработчиков:

В закрепе 40+ каналов на разные айти-тематики
79
5
1
73 комментария