Unity-разработчик (Junior)
Описание программы:
Курс разработан для начинающих и направлен на освоение базовых навыков разработки игр в движке Unity. Обучение включает работу с интерфейсом Unity, программирование на C#, создание игровых механик, анимаций, физики и пользовательского интерфейса. В рамках курса слушатели реализуют несколько практических проектов и завершат обучение созданием полноценной мини-игры.
Что предстоит пройти на курсе:
- Основы работы с Unity: интерфейс, объекты, компоненты, сцены
- Программирование на языке C#: переменные, условия, циклы, события
- Создание игровых механик: управление персонажем, взаимодействие с объектами
- Работа с графикой: импорт ресурсов, работа с 2D и 3D моделями
- Анимация: использование Animator, создание анимированных персонажей
- UI/UX: создание меню, кнопок, индикаторов здоровья и очков
- Физика: применение Rigidbody, Collider, триггеров, частиц
- Версионный контроль: начальные навыки работы с Git и GitHub
- Итоговая проектная работа: от замысла до готового билда игры
Ожидаемые результаты после прохождения курса:
Слушатель должен уметь:
- Создавать простые 2D и 3D игры в Unity
- Писать скрипты на C# для реализации игровой логики
- Настроить анимации, физику и взаимодействие объектов
- Разрабатывать пользовательский интерфейс
- Использовать версионный контроль при работе над проектами
- Подготовить портфолио из нескольких завершённых проектов
Слушатель должен знать:
- Структуру и основные инструменты движка Unity
- Базовые принципы программирования на C#
- Механизмы работы с анимацией, графикой и физикой
- Основы проектирования пользовательского интерфейса
- Принципы организации кода и проекта в Unity
Дополнительно:
- Введение в Agile и Scrum-методологии
- Советы по трудоустройству: составление резюме, подготовка к собеседованию
- Рекомендации по развитию в сфере геймдева
Итоговая аттестация:
- Выполнение и защита дипломного проекта
- Тестирование знаний по пройденным темам
- Получение сертификата об окончании курса
-
Что такое Unity и для чего он используется?
Unity — это кроссплатформенный игровой движок, используемый для разработки 2D и 3D игр, симуляций, интерактивных приложений и VR/AR-контента. Он предоставляет инструменты для создания графики, физики, анимаций, звука и логики игры. -
Какие основные окна в интерфейсе Unity вы знаете?
Основные окна: Scene (редактор сцены), Game (отображает игру во время воспроизведения), Hierarchy (список объектов на сцене), Project (файлы проекта), Inspector (параметры выбранных объектов). -
Что такое GameObject и как его создать?
GameObject — это базовый элемент в Unity, представляющий любой объект в игре. Создать можно через правую кнопку мыши в Hierarchy → Create Empty или выбрать шаблоны (например, 3D Object → Cube). -
Что такое компоненты в Unity? Приведите примеры.
Компоненты — это функциональные модули, добавляемые к GameObject. Примеры: Transform (позиция, поворот, масштаб), Rigidbody (физика), Collider (обнаружение столкновений), SpriteRenderer (отображение спрайтов). -
Что такое Transform и какие данные он хранит?
Transform — это компонент, который определяет позицию, вращение и масштаб объекта в пространстве сцены. -
Как работают методы Start() и Update()?
Start() вызывается один раз при запуске игры после завершения инициализации. Update() вызывается каждый кадр и используется для реализации игровой логики, например, обработки ввода. -
Что такое C# и почему он используется в Unity?
C# — это современный язык программирования, поддерживающий ООП. Unity использует C# благодаря его мощным возможностям и хорошей интеграции с движком. -
Что такое переменная и какие типы данных существуют в C#?
Переменная — это контейнер для хранения данных. Типы данных: int (целое число), float (дробное число), string (текст), bool (логическое значение true/false), Vector2/Vector3 (координаты) и др. -
Что такое коллайдеры и зачем они нужны?
Коллайдеры — это компоненты, отвечающие за взаимодействие объектов между собой и физикой. Они позволяют обнаруживать столкновения и триггеры. -
Чем отличается Collider от Trigger?
Collider реагирует на столкновения, останавливая объекты. Trigger позволяет объектам проходить сквозь него, но вызывает событие при пересечении. -
Что такое Rigidbody и какие его основные свойства?
Rigidbody — это компонент, позволяющий объекту подчиняться законам физики. Свойства: масса, гравитация, сопротивление воздуха, булевы флаги типа isKinematic. -
Как создать и запустить простую анимацию в Unity?
Создать анимацию: Window → Animation → Create. Добавить ключевые кадры для параметров объекта (например, позиции). Назначить анимацию компоненту Animator и запустить игру. -
Что такое UI и какие элементы интерфейса есть в Unity?
UI — это пользовательский интерфейс. Элементы: Button, Text, Image, Slider, Toggle, InputField и другие, размещаются внутри Canvas. -
Как работает система событий в Unity UI?
События, такие как нажатия на кнопку, обрабатываются через компонент EventSystem и классы ввода. Для реакции на действия пользователя используются делегаты и подписка на события. -
Что такое PlayerPrefs и как им пользоваться?
PlayerPrefs — это простой способ сохранять данные между запусками игры. Используется для хранения чисел, строк. Методы: SetInt(), GetInt(), Save(). -
Что такое SceneManager и как переключаться между сценами?
SceneManager — это класс, управляющий загрузкой и выгрузкой сцен. Для перехода используется SceneManager.LoadScene("SceneName"). -
Что такое Instantiate и Destroy?
Instantiate создаёт копию объекта во время выполнения. Destroy удаляет объект из сцены. Оба часто используются для создания и удаления объектов во время игры. -
Что такое корутины и как их использовать?
Корутины — это функции, которые могут приостанавливать своё выполнение. Запускаются через StartCoroutine(), останавливаются через StopCoroutine(). Используют yield return для задержек. -
Что такое Tag и Layer?
Tag — это метка для идентификации объектов. Layer — группа объектов, используемая для фильтрации взаимодействий, например, для физических столкновений или отрисовки. -
Что такое Canvas и какие режимы рендеринга он поддерживает?
Canvas — это контейнер для UI-элементов. Режимы: Screen Space - Overlay (интерфейс всегда поверх экрана), World Space (интерфейс как 3D-объект), Screen Space - Camera (интерфейс привязан к камере). -
Что такое ScriptableObject и в чём его преимущество?
ScriptableObject — это отдельный файл данных, который можно использовать вне сцен. Позволяет хранить информацию (например, статы персонажей) и делиться ею между несколькими объектами. -
Как получить доступ к другому компоненту из скрипта?
Через метод GetComponent<T>(), где T — тип нужного компонента. Например: Rigidbody rb = GetComponent<Rigidbody>(); -
Что такое Time.deltaTime и зачем он нужен?
Time.deltaTime — это время, прошедшее между кадрами. Используется для плавного движения, чтобы скорость не зависела от частоты кадров. -
Как обрабатывать ввод пользователя в Unity?
Ввод обрабатывается через класс Input. Например, Input.GetKey(KeyCode.Space) проверяет, нажата ли клавиша пробела. -
Что такое асинхронная загрузка сцен и как её реализовать?
Асинхронная загрузка позволяет загружать сцены без зависания игры. Реализуется через SceneManager.LoadSceneAsync("SceneName"). -
Что такое Prefab и как его использовать в проекте?
Prefab — это шаблон объекта, который можно многократно использовать в сцене. Создается перетаскиванием GameObject из Hierarchy в Project. Для создания копии используется Instantiate(). -
Как работают условия if-else в C# и где они применяются в Unity?
Условия if-else позволяют выполнять разные блоки кода в зависимости от истинности выражения. В Unity часто используются для проверки состояния объектов, например, здоровья персонажа или нажатия клавиш. -
Что такое циклы в C# и какие виды циклов существуют?
Циклы — это конструкции, позволяющие повторять выполнение кода. В C# есть: for (повтор заданное количество раз), while (пока условие истинно), foreach (для элементов коллекции). -
Что такое массив и как его объявить в C#?
Массив — это структура данных, хранящая набор значений одного типа. Объявление: int[] numbers = new int[5]; или string[] names = { "John", "Alice" }; -
Что такое функция и как её создать в C#?
Функция — это блок кода, выполняющий определённую задачу. Создание: void MyFunction() { /* код */ }, вызов: MyFunction();. -
Что такое Vector2 и Vector3 и где они применяются в Unity?
Vector2 — двумерный вектор (x, y), используется в 2D. Vector3 — трёхмерный вектор (x, y, z), используется в 3D. Применяются для позиций, направлений и перемещений. -
Что такое инкапсуляция в ООП и как она реализуется в C#?
Инкапсуляция — это принцип скрытия внутренней реализации класса. Реализуется через модификаторы доступа: public, private, protected. -
Что такое наследование в ООП и как его использовать в Unity?
Наследование позволяет одному классу (производному) наследовать поля и методы другого класса (базового). Например: public class Enemy : MonoBehaviour. -
Что такое полиморфизм в ООП и как он работает в C#?
Полиморфизм позволяет объектам разных классов обрабатываться как объекты одного базового класса. Реализуется через переопределение методов с virtual/override. -
Что такое Rigidbody2D и чем он отличается от Rigidbody?
Rigidbody2D — компонент физики для 2D-объектов. Отличается от обычного Rigidbody тем, что работает в двухмерном пространстве и имеет свои свойства и методы. -
Что такое Collider2D и какие типы коллайдеров бывают в 2D?
Collider2D — компонент для взаимодействия с физикой в 2D. Типы: BoxCollider2D, CircleCollider2D, PolygonCollider2D, EdgeCollider2D. -
Что такое анимационный контроллер (Animator Controller)?
Animator Controller — файл, управляющий логикой переходов между анимациями. Позволяет задавать условия перехода через параметры (bool, trigger, float и др.). -
Как добавить звук в Unity и воспроизвести его во время игры?
Загрузите аудиофайл в проект, добавьте AudioSource на GameObject и назначьте AudioClip. Воспроизведение: audioSource.Play();. -
Что такое AudioListener и зачем он нужен?
AudioListener — компонент, обычно добавляемый к камере, который слушает звуки в сцене и воспроизводит их в соответствии с положением источника. -
Что такое Time.timeScale и как его использовать?
Time.timeScale управляет скоростью времени в игре. Значение 0 останавливает все процессы, связанные с временем. Используется, например, для паузы или замедления игры. -
Что такое SceneManager и как проверить текущую активную сцену?
SceneManager — класс для управления сценами. Активная сцена получается через SceneManager.GetActiveScene().name. -
Что такое InvokeRepeating и как его использовать?
InvokeRepeating вызывает метод с заданным интервалом. Пример: InvokeRepeating("SpawnEnemy", 2f, 1f); — запускает SpawnEnemy через 2 секунды и каждую 1 секунду после этого. -
Что такое EventTrigger и как им пользоваться в UI?
EventTrigger — компонент, позволяющий обрабатывать сложные события пользовательского ввода (например, наведение мыши, клик, пролистывание колеса). -
Как сохранить и загрузить данные в PlayerPrefs?
Сохранение: PlayerPrefs.SetInt("score", 100); PlayerPrefs.Save();
Загрузка: int score = PlayerPrefs.GetInt("score"); -
Что такое SceneManager.LoadSceneAsync() и почему он используется?
LoadSceneAsync позволяет загружать сцену в фоновом режиме, чтобы не зависала игра. Часто используется с прогресс-баром загрузки. -
Что такое DontDestroyOnLoad и когда он применяется?
DontDestroyOnLoad — метод, предотвращающий уничтожение объекта при загрузке новой сцены. Используется для объектов, которые должны существовать всё время игры, например, менеджера звука. -
Что такое корутины и как они помогают в управлении временными задержками?
Корутины позволяют выполнять код с задержкой без блокировки основного потока. Например: yield return new WaitForSeconds(2f); — ожидание 2 секунды. -
Что такое Canvas Scaler и зачем он нужен?
Canvas Scaler — компонент, регулирующий масштаб интерфейса под разные разрешения экрана, обеспечивая корректное отображение UI. -
Что такое TextMeshPro и чем он лучше стандартного Text?
TextMeshPro — расширенный компонент для отображения текста. Предоставляет больше возможностей по оформлению, производительности и гибкости по сравнению со стандартным Text. -
Что такое Asset Store и как им пользоваться?
Asset Store — магазин цифровых активов для Unity. Можно находить и скачивать модели, текстуры, скрипты, плагины и другие ресурсы для проекта прямо внутри Unity Editor. -
Что такое MonoBehaviour и какую роль он играет в Unity?
MonoBehaviour — это базовый класс для всех скриптов, прикрепляемых к GameObject. Он предоставляет методы жизненного цикла (Start, Update и др.) и доступ к системе Unity. -
Какие основные этапы жизненного цикла скрипта в Unity вы знаете?
Awake (вызывается при инициализации), OnEnable (при активации объекта), Start (перед первым кадром), Update (каждый кадр), LateUpdate (после Update), FixedUpdate (для физики), OnDisable, OnDestroy. -
В чём разница между Awake и Start?
Awake вызывается сразу при инициализации объекта, даже если он не активен. Start вызывается перед первым кадром только у активных объектов. -
Что такое Debug.Log и для чего он используется?
Debug.Log — метод вывода сообщений в консоль Unity. Используется для отладки: проверки значений переменных, логирования событий и поиска ошибок. -
Что такое Input.GetAxis и как он используется в управлении персонажем?
Input.GetAxis("Horizontal") или "Vertical" возвращает значение от -1 до 1, основанное на нажатии клавиш (например, стрелок или WASD). Используется для плавного управления движением. -
Что такое Vector3.MoveTowards и как его использовать?
Vector3.MoveTowards позволяет перемещать объект к заданной точке с заданной скоростью. Пример: transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime); -
Что такое Quaternion.LookRotation и где применяется?
Quaternion.LookRotation создаёт поворот, направленный в определённую сторону. Часто используется для поворота камеры или объекта к другому объекту. -
Что такое Instantiate и какие параметры он принимает?
Instantiate создаёт копию объекта. Принимает оригинал, позицию, поворот и, опционально, родителя: Instantiate(prefab, position, rotation, parent); -
Что такое Destroy и как указать задержку уничтожения объекта?
Destroy(gameObject, 2f); — уничтожит объект через 2 секунды после вызова. Это полезно для временных объектов, например, частиц или бонусов. -
Что такое Singleton и как его реализовать в Unity?
Singleton — это шаблон проектирования, гарантирующий существование только одного экземпляра класса. Реализуется через статическое поле и DontDestroyOnLoad. -
Что такое LayerMask и как его использовать в Physics.Raycast?
LayerMask позволяет ограничить выборку объектов по слоям. Например: Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask); — будет учитывать только объекты нужного слоя. -
Что такое Raycast и где он применяется?
Raycast — это "луч", используемый для обнаружения столкновений в сцене. Применяется для стрельбы, выбора объектов мышью, обнаружения препятствий и т.д. -
Что такое SceneManager.sceneLoaded и как подписаться на событие загрузки сцены?
Это событие вызывается при загрузке новой сцены. Подписка: SceneManager.sceneLoaded += OnSceneLoaded; -
Что такое Resources.Load и как им пользоваться?
Resources.Load — метод загрузки ресурсов во время выполнения из папки Resources. Пример: var prefab = Resources.Load<GameObject>("MyPrefab"); -
Что такое PlayerPrefs.HasKey и зачем он нужен?
PlayerPrefs.HasKey проверяет, существует ли сохранённое значение по указанному ключу. Полезно при проверке наличия сохранённых данных перед их чтением. -
Что такое SceneManager.UnloadSceneAsync и когда он используется?
Метод асинхронной выгрузки сцены. Используется, чтобы освободить память, когда сцена больше не нужна. -
Что такое Animation Event и как его добавить?
Animation Event — это вызов метода в определённый момент анимации. Добавляется в окне Animation при редактировании клипа. -
Что такое Animator Override Controller и зачем он нужен?
Animator Override Controller позволяет заменять анимации в существующем Animator Controller'е без изменения оригинала. Используется для гибкой настройки анимаций разных персонажей. -
Что такое Sprite Atlas и как он помогает в оптимизации?
Sprite Atlas — это текстура, объединяющая несколько спрайтов в одну. Уменьшает количество draw call'ов и ускоряет отрисовку. -
Что такое Sorting Layer и Order in Layer в 2D-проектах?
Sorting Layer задаёт глубину группы объектов, а Order in Layer — порядок внутри этого слоя. Вместе они определяют, какой объект будет поверх другого. -
Что такое Rigidbody2D.velocity и чем он отличается от Transform.position?
Rigidbody2D.velocity применяет физическое движение, учитывая массу и другие свойства тела. Transform.position изменяет позицию напрямую, что может нарушать физику. -
Что такое Collider2D.isTrigger и как он влияет на взаимодействие?
Если isTrigger включён, коллайдер не блокирует физические объекты, но вызывает события OnTriggerEnter2D/Exit/Stay. -
Что такое Joint2D и какие типы соединений бывают?
Joint2D связывает два объекта физически. Типы: HingeJoint2D (шарнир), DistanceJoint2D (расстояние), FixedJoint2D (фиксированная связь) и др. -
Что такое Cinemachine и зачем он используется?
Cinemachine — это система камер Unity, позволяющая создавать динамичные камеры с тряской, зумом, следованием за объектами и другими эффектами без ручного кодирования. -
Что такое Addressables и чем они отличаются от Resources?
Addressables — это система загрузки и управления ресурсами, которая позволяет грузить их по запросу, в том числе с удалённых серверов. В отличие от Resources, они не загружаются автоматически и поддерживают гибкое управление памятью.
-
Какой язык программирования используется в Unity для написания скриптов?
A) Java
B) C#
C) Python
D) JavaScript
Правильный ответ: B) C# -
Какой компонент отвечает за физическое поведение объекта в Unity?
A) Transform
B) Rigidbody
C) Collider
D) Animator
Правильный ответ: B) Rigidbody -
Что такое GameObject в Unity?
A) Скрипт
B) Основной элемент сцены
C) Анимация
D) Материал
Правильный ответ: B) Основной элемент сцены -
Какой компонент управляет позицией, вращением и масштабом объекта?
A) Rigidbody
B) Collider
C) Transform
D) Renderer
Правильный ответ: C) Transform -
Какой тип проекта позволяет работать как с 2D, так и с 3D графикой?
A) 2D
B) 3D
C) Universal
D) Custom
Правильный ответ: C) Universal -
Что такое Prefab в Unity?
A) Графический файл
B) Заготовка объекта, которую можно повторно использовать
C) Тип анимации
D) Формат звука
Правильный ответ: B) Заготовка объекта, которую можно повторно использовать -
Как добавить новый объект на сцену?
A) Через консоль
B) Правой кнопкой мыши в Hierarchy → Create Empty
C) В меню Window
D) В инспекторе
Правильный ответ: B) Правой кнопкой мыши в Hierarchy → Create Empty -
Какой метод вызывается при запуске игры один раз?
A) Update()
B) Start()
C) FixedUpdate()
D) LateUpdate()
Правильный ответ: B) Start() -
Какой метод вызывается каждый кадр?
A) Start()
B) Update()
C) Awake()
D) OnEnable()
Правильный ответ: B) Update() -
Что делает метод Debug.Log()?
A) Запускает игру
B) Выводит сообщение в консоль
C) Сохраняет данные
D) Перезапускает сцену
Правильный ответ: B) Выводит сообщение в консоль -
Какое расширение имеют файлы сцен в Unity?
A) .unity
B) .scene
C) .u3d
D) .asset
Правильный ответ: A) .unity -
Какой элемент отвечает за отображение спрайта на экране?
A) SpriteRenderer
B) TextMeshPro
C) Camera
D) Light
Правильный ответ: A) SpriteRenderer -
Что такое UI в Unity?
A) Управление физикой
B) Работа с аудио
C) Интерфейс пользователя
D) Система частиц
Правильный ответ: C) Интерфейс пользователя -
Какой компонент используется для создания кнопок в интерфейсе?
A) Text
B) Image
C) Button
D) Slider
Правильный ответ: C) Button -
Какой компонент отвечает за воспроизведение звука?
A) AudioSource
B) AudioListener
C) SoundManager
D) AudioClip
Правильный ответ: A) AudioSource -
Какой компонент необходим на камере для воспроизведения звука?
A) AudioSource
B) AudioListener
C) SoundManager
D) AudioClip
Правильный ответ: B) AudioListener -
Что такое Collider?
A) Объект сцены
B) Компонент, определяющий физические свойства
C) Компонент, задающий форму объекта для взаимодействия с физикой
D) Скрипт
Правильный ответ: C) Компонент, задающий форму объекта для взаимодействия с физикой -
Какой компонент позволяет запускать анимацию?
A) Animation
B) Animator
C) Rigidbody
D) Collider
Правильный ответ: B) Animator -
Как создать новую анимацию в Unity?
A) Создать скрипт
B) Нажать правой кнопкой в Project → Create → Animation
C) Добавить Collider
D) Выбрать из Asset Store
Правильный ответ: B) Нажать правой кнопкой в Project → Create → Animation -
Какой метод вызывается при столкновении объектов?
A) OnCollisionEnter()
B) OnTriggerEnter()
C) OnMouseDown()
D) OnBecameVisible()
Правильный ответ: A) OnCollisionEnter() -
Какой метод вызывается при входе в триггер?
A) OnCollisionEnter()
B) OnTriggerEnter()
C) OnMouseDown()
D) OnBecameVisible()
Правильный ответ: B) OnTriggerEnter() -
Какой компонент отвечает за движение камеры?
A) Rigidbody
B) Camera
C) Transform
D) Collider
Правильный ответ: B) Camera -
Какой тип переменной используется для хранения текста?
A) int
B) float
C) bool
D) string
Правильный ответ: D) string -
Какой тип переменной хранит значение "истина" или "ложь"?
A) int
B) float
C) bool
D) string
Правильный ответ: C) bool -
Как сохранить проект в Unity?
A) File → Save Scene
B) Ctrl + Z
C) Play
D) Build Settings
Правильный ответ: A) File → Save Scene -
Что такое Asset в Unity?
A) Объект на сцене
B) Внешний ресурс, используемый в проекте (например, текстура или модель)
C) Компонент физики
D) Метод скрипта
Правильный ответ: B) Внешний ресурс, используемый в проекте (например, текстура или модель) -
Какой компонент отвечает за отображение 3D модели?
A) SpriteRenderer
B) MeshRenderer
C) TextMeshPro
D) LineRenderer
Правильный ответ: B) MeshRenderer -
Какое окно в Unity используется для написания скриптов?
A) Scene
B) Game
C) Project
D) Inspector
Правильный ответ: C) Project -
Какое действие выполняет оператор "==" в C#?
A) Присваивание значения
B) Сравнение на равенство
C) Увеличение числа на 1
D) Вызов функции
Правильный ответ: B) Сравнение на равенство -
Что означает ключевое слово "public" в объявлении переменной в C#?
A) Переменная доступна только внутри класса
B) Переменная будет отображаться в инспекторе Unity и доступна из других скриптов
C) Переменная является статической
D) Переменная не может быть изменена
Правильный ответ: B) Переменная будет отображаться в инспекторе Unity и доступна из других скриптов -
Что делает метод GetComponent<T>()?
A) Добавляет новый компонент объекту
B) Удаляет компонент у объекта
C) Получает ссылку на существующий компонент объекта
D) Создаёт копию объекта
Правильный ответ: C) Получает ссылку на существующий компонент объекта -
Какой тип коллайдера используется для круга в 2D?
A) BoxCollider2D
B) CircleCollider2D
C) CapsuleCollider2D
D) PolygonCollider2D
Правильный ответ: B) CircleCollider2D -
Что такое Instantiate в Unity?
A) Уничтожает объект
B) Создаёт копию объекта во время выполнения
C) Загружает новую сцену
D) Останавливает воспроизведение аудио
Правильный ответ: B) Создаёт копию объекта во время выполнения -
Какой метод вызывается при уничтожении объекта?
A) Start()
B) OnDestroy()
C) OnDisable()
D) Update()
Правильный ответ: B) OnDestroy() -
Что такое Time.deltaTime?
A) Время, прошедшее с последнего кадра
B) Общее время игры
C) Постоянная величина
D) Время между нажатиями мыши
Правильный ответ: A) Время, прошедшее с последнего кадра -
Как создать пустой GameObject программно?
A) GameObject.Create()
B) new GameObject()
C) Instantiate(new GameObject())
D) GameObject.Find("name")
Правильный ответ: B) new GameObject() -
Какой компонент управляет освещением в сцене?
A) Camera
B) Light
C) Rigidbody
D) Collider
Правильный ответ: B) Light -
Что происходит при вызове Destroy(gameObject)?
A) Объект перемещается в корзину
B) Объект уничтожается в конце кадра
C) Объект становится невидимым
D) Объект блокируется от взаимодействия
Правильный ответ: B) Объект уничтожается в конце кадра -
Что такое SceneManager в Unity?
A) Инструмент для работы с анимацией
B) Класс, управляющий загрузкой и выгрузкой сцен
C) Компонент камеры
D) Менеджер звука
Правильный ответ: B) Класс, управляющий загрузкой и выгрузкой сцен -
Какой метод позволяет перейти к другой сцене?
A) SceneManager.LoadScene()
B) SceneManager.UnloadScene()
C) SceneManager.GetActiveScene()
D) SceneManager.MergeScenes()
Правильный ответ: A) SceneManager.LoadScene() -
Что такое PlayerPrefs в Unity?
A) Класс для управления временем
B) Система хранения простых данных между сессиями
C) Класс для работы с графикой
D) Система управления анимациями
Правильный ответ: B) Система хранения простых данных между сессиями -
Какой тип данных не поддерживается PlayerPrefs?
A) int
B) float
C) bool
D) string
Правильный ответ: C) bool -
Как сохранить значение 5 в PlayerPrefs под ключом "score"?
A) PlayerPrefs.SetInt("score", 5);
B) PlayerPrefs.SetFloat("score", 5);
C) PlayerPrefs.SetString("score", "5");
D) PlayerPrefs.SaveValue("score", 5);
Правильный ответ: A) PlayerPrefs.SetInt("score", 5); -
Какой метод вызывается при каждом физическом обновлении?
A) Update()
B) LateUpdate()
C) FixedUpdate()
D) Start()
Правильный ответ: C) FixedUpdate() -
Какой компонент используется для создания частиц?
A) ParticleSystem
B) TrailRenderer
C) Light
D) AudioSource
Правильный ответ: A) ParticleSystem -
Что такое Hierarchy в Unity?
A) Окно для написания кода
B) Список всех активных объектов на сцене
C) Список всех файлов проекта
D) История изменений
Правильный ответ: B) Список всех активных объектов на сцене -
Что означает префикс "On" в методах Unity, таких как OnMouseDown()?
A) Это внутренние методы ядра Unity
B) Это события, вызываемые при определённых действиях
C) Это случайные имена
D) Это часть API физики
Правильный ответ: B) Это события, вызываемые при определённых действиях -
Какой компонент добавляется автоматически при добавлении 2D спрайта?
A) Rigidbody2D
B) SpriteRenderer
C) Animator
D) Collider2D
Правильный ответ: B) SpriteRenderer -
Какой вид связи между объектами называется "Parenting"?
A) Привязка одного объекта к другому через скрипт
B) Назначение одного объекта родительским по отношению к другому
C) Подключение аудио к объекту
D) Привязка материалов к объекту
Правильный ответ: B) Назначение одного объекта родительским по отношению к другому -
Что делает метод Time.timeScale = 0;?
A) Ускоряет время
B) Останавливает время (все процессы замедляются)
C) Сбрасывает таймер
D) Увеличивает частоту кадров
Правильный ответ: B) Останавливает время (все процессы замедляются) -
Какой компонент отвечает за обработку ввода с клавиатуры или мыши?
A) InputManager
B) EventSystem
C) InputHandler
D) PlayerInput
Правильный ответ: A) InputManager -
Как получить нажатие кнопки "пробел" в Unity?
A) Input.GetKeyDown(KeyCode.Space);
B) Input.GetKey("space");
C) Input.PressKey("space");
D) Input.OnKeyPress(KeyCode.Space);
Правильный ответ: A) Input.GetKeyDown(KeyCode.Space); -
Что такое Tag в Unity?
A) Компонент объекта
B) Специальная метка для идентификации GameObject
C) Тип переменной
D) Метод скрипта
Правильный ответ: B) Специальная метка для идентификации GameObject -
Как найти объект на сцене по тегу?
A) FindGameObjectWithTag()
B) FindWithTag()
C) GetObjectByTag()
D) SearchByTag()
Правильный ответ: A) FindGameObjectWithTag() -
Что такое Layer в Unity?
A) Уровень сложности игры
B) Группировка объектов для фильтрации взаимодействий (например, физических)
C) Слой анимации
D) Сцена проекта
Правильный ответ: B) Группировка объектов для фильтрации взаимодействий (например, физических) -
Как изменить слой объекта в инспекторе?
A) Через выпадающий список Layer
B) Нажав на кнопку Edit Layers
C) В настройках Physics Manager
D) Все варианты верны
Правильный ответ: D) Все варианты верны -
Какой тип света используется для создания направленного освещения, как солнце?
A) Point Light
B) Spot Light
C) Directional Light
D) Area Light
Правильный ответ: C) Directional Light -
Что такое ScriptableObject в Unity?
A) Скрипт, который нельзя редактировать
B) Объект данных, который можно сохранить и использовать вне сцен
C) Скрипт, автоматически добавляемый к объектам
D) Класс для управления временем
Правильный ответ: B) Объект данных, который можно сохранить и использовать вне сцен -
Какой компонент позволяет объекту следовать за курсором мыши?
A) MouseFollower
B) Transform
C) Rigidbody
D) Collider
Правильный ответ: B) Transform -
Что делает метод Invoke()?
A) Вызывает функцию один раз через указанный интервал времени
B) Постоянно вызывает функцию
C) Останавливает выполнение скрипта
D) Перезапускает игру
Правильный ответ: A) Вызывает функцию один раз через указанный интервал времени -
Как остановить выполнение Invoke()?
A) StopInvoke()
B) CancelInvoke()
C) PauseInvoke()
D) ClearInvoke()
Правильный ответ: A) StopInvoke() -
Что такое Coroutines в Unity?
A) Параллельные процессы
B) Функции, которые могут приостанавливать своё выполнение
C) Методы для работы с файлами
D) Система событий
Правильный ответ: B) Функции, которые могут приостанавливать своё выполнение -
Как запустить корутину?
A) StartCoroutine()
B) RunCoroutine()
C) InvokeCoroutine()
D) ExecuteCoroutine()
Правильный ответ: A) StartCoroutine() -
Какое ключевое слово используется для завершения корутины?
A) yield return null;
B) break;
C) stop;
D) exit;
Правильный ответ: A) yield return null; -
Что такое Canvas в Unity?
A) Основной элемент сцены
B) Контейнер для UI-элементов
C) Компонент камеры
D) Слой графики
Правильный ответ: B) Контейнер для UI-элементов -
Какой режим рендеринга Canvas позволяет UI адаптироваться под разные экраны?
A) Screen Space - Overlay
B) World Space
C) Screen Space - Camera
D) Все вышеперечисленное
Правильный ответ: A) Screen Space - Overlay -
Какой компонент отображает текст в интерфейсе Unity?
A) TextMeshPro
B) Text
C) Label
D) Все варианты верны
Правильный ответ: D) Все варианты верны -
Что такое RectTransform?
A) Компонент, управляющий позицией 3D-объекта
B) Компонент, управляющий расположением UI-элементов на экране
C) Компонент камеры
D) Компонент частиц
Правильный ответ: B) Компонент, управляющий расположением UI-элементов на экране -
Какой компонент позволяет игроку перетаскивать UI-элементы?
A) DragHandler
B) EventTrigger
C) ContentSizeFitter
D) LayoutElement
Правильный ответ: A) DragHandler -
Что такое PlayerPrefs.DeleteAll()?
A) Удаляет все данные из памяти
B) Очищает все сохранённые значения PlayerPrefs
C) Закрывает приложение
D) Перезагружает сцену
Правильный ответ: B) Очищает все сохранённые значения PlayerPrefs -
Что такое SceneManager.LoadSceneAsync()?
A) Асинхронная загрузка сцены
B) Синхронная загрузка сцены
C) Удаление сцены
D) Перезапуск текущей сцены
Правильный ответ: A) Асинхронная загрузка сцены -
Какой метод вызывается при активации GameObject?
A) OnEnable()
B) OnDisable()
C) OnDestroy()
D) OnStart()
Правильный ответ: A) OnEnable() -
Что такое Asset Store в Unity?
A) Магазин готовых проектов, моделей, скриптов и других ресурсов
B) Инструмент для написания кода
C) Редактор анимаций
D) Система сборки проекта
Правильный ответ: A) Магазин готовых проектов, моделей, скриптов и других ресурсов -
Какой тип файла хранит параметры анимации?
A) .anim
B) .fbx
C) .prefab
D) .mat
Правильный ответ: A) .anim -
Какой компонент управляет воспроизведением анимации через Animator Controller?
A) Animation
B) Animator
C) AnimatorController
D) AnimatorOverrideController
Правильный ответ: B) Animator -
Что такое Animator Controller?
A) Скрипт для управления движком
B) Файл, определяющий логику переходов между анимациями
C) Компонент камеры
D) Система физики
Правильный ответ: B) Файл, определяющий логику переходов между анимациями
Экзаменационный билет №1
Теоретическая часть
- Что такое GameObject и какие основные компоненты обычно к нему добавляются в Unity?
- Охарактеризуйте методы жизненного цикла скрипта в Unity: Awake, Start, Update.
Ответы на теоретическую часть:
- GameObject — это базовый элемент сцены в Unity, представляющий любой объект. Обычно к нему добавляют такие компоненты, как Transform (отвечает за позицию, поворот и масштаб), Rigidbody (физическое поведение), Collider (обнаружение столкновений), SpriteRenderer или MeshRenderer (визуальное отображение) и другие.
- Awake вызывается при инициализации объекта, даже если он не активен. Start вызывается перед первым кадром, только у активных объектов. Update вызывается каждый кадр и используется для реализации игровой логики, например, обработки ввода.
Практическая часть
Создайте скрипт на языке C#, который перемещает объект по оси X вправо при нажатии клавиши "D", используя метод Update(), функцию Input.GetKey() и Time.deltaTime.
using UnityEngine;
public class MoveRight : MonoBehaviour
{
public float speed = 5f;
void Update()
{
if (Input.GetKey(KeyCode.D))
{
transform.Translate(Vector3.right * speed * Time.deltaTime);
}
}
}
Экзаменационный билет №2
Теоретическая часть
- Что такое Rigidbody и как он взаимодействует с физической системой движка?
- Какие типы коллайдеров вы знаете и в чём разница между Collider и Trigger?
Ответы на теоретическую часть:
- Rigidbody — это компонент, который добавляет объекту физические свойства, такие как гравитация, масса, скорость. Он позволяет объекту взаимодействовать с другими физическими объектами, реагировать на силы и столкновения.
- В Unity есть BoxCollider, SphereCollider, CapsuleCollider и др. Collider обеспечивает физическое взаимодействие (столкновение). Trigger позволяет объектам проходить сквозь него, но вызывает событие при пересечении.
Практическая часть
Напишите скрипт на C#, который при столкновении с объектом с тегом "Enemy" выводит сообщение в консоль и уничтожает этот объект.
using UnityEngine;
public class DestroyOnCollision : MonoBehaviour
{
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Enemy"))
{
Debug.Log("Враг уничтожен!");
Destroy(collision.gameObject);
}
}
}
Экзаменационный билет №3
Теоретическая часть
- Что такое анимационный контроллер (Animator Controller) и как он взаимодействует с компонентом Animator?
- Как работают условия перехода между анимациями в Unity?
Ответы на теоретическую часть:
- Animator Controller — это файл, определяющий логику переключения между анимациями. Он подключается к объекту через компонент Animator и управляет воспроизведением анимаций в зависимости от заданных условий.
- Условия перехода задаются через параметры (bool, int, float, trigger). Например, если параметр "isRunning" становится true, анимация переходит из idle к running. Эти параметры изменяются программно в скриптах.
Практическая часть
Создайте скрипт, который при нажатии клавиши "Space" запускает анимацию прыжка через Animator, используя параметр типа Trigger.
using UnityEngine;
public class JumpAnimation : MonoBehaviour
{
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("Jump");
}
}
}
Экзаменационный билет №4
Теоретическая часть
- Что такое UI в Unity и какие основные элементы интерфейса вы знаете?
- Как работает система событий в Unity UI?
Ответы на теоретическую часть:
- UI — это пользовательский интерфейс. Основные элементы: Canvas (контейнер для UI), Text, Image, Button, Slider, Toggle. Они позволяют создать меню, HUD, инвентарь и другие элементы интерфейса игрока.
- События UI обрабатываются через EventSystem. Например, нажатие на кнопку вызывает OnClick(), которое можно связать с методом в скрипте или вызвать через код.
Практическая часть
Создайте скрипт, который при нажатии на кнопку увеличивает значение переменной score и выводит его в текстовом поле.
using UnityEngine;
using UnityEngine.UI;
public class ScoreCounter : MonoBehaviour
{
public Text scoreText;
private int score = 0;
public void AddScore()
{
score++;
scoreText.text = "Очки: " + score;
}
}
Экзаменационный билет №5
Теоретическая часть
- Что такое PlayerPrefs и какие основные методы он предоставляет?
- Что такое корутины и зачем они нужны в Unity?
Ответы на теоретическую часть:
- PlayerPrefs — это простая система сохранения данных между запусками игры. Методы: SetInt(), SetFloat(), SetString(), GetInt(), GetFloat(), GetString(), DeleteAll(), Save().
- Корутины — это функции, которые могут останавливаться и возобновляться. Они используются для задержек без блокировки потока. Пример: StartCoroutine(ExampleCoroutine()); где внутри yield return new WaitForSeconds(2f);
Практическая часть
Создайте скрипт, который каждые 2 секунды создаёт префаб объекта в позиции игрока.
using UnityEngine;
public class Spawner : MonoBehaviour
{
public GameObject prefabToSpawn;
void Start()
{
StartCoroutine(SpawnRoutine());
}
IEnumerator SpawnRoutine()
{
while (true)
{
Instantiate(prefabToSpawn, transform.position, Quaternion.identity);
yield return new WaitForSeconds(2f);
}
}
}
Экзаменационный билет №6
Теоретическая часть
- Что такое SceneManager и как он используется для переключения между сценами?
- В чём разница между SceneManager.LoadScene() и SceneManager.LoadSceneAsync()? Приведите пример использования.
Ответы на теоретическую часть:
- SceneManager — это класс Unity, управляющий загрузкой, выгрузкой и переключением между сценами. Используется через методы LoadScene(), UnloadSceneAsync(), GetActiveScene() и др.
- LoadScene() загружает сцену синхронно, останавливая выполнение других действий. LoadSceneAsync() загружает сцену асинхронно, что позволяет отображать прогрессбар или продолжать выполнение кода.
Практическая часть
Напишите скрипт, который при нажатии клавиши "N" загружает следующую сцену по имени "Level2".
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadNextScene : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.N))
{
SceneManager.LoadScene("Level2");
}
}
}
Экзаменационный билет №7
Теоретическая часть
- Что такое Transform и какие основные свойства он предоставляет?
- Как работает Time.deltaTime и зачем он нужен?
Ответы на теоретическую часть:
- Transform — это компонент, отвечающий за позицию, поворот и масштаб объекта. Основные свойства: position, rotation, localScale.
- Time.deltaTime — время, прошедшее с последнего кадра. Используется для сглаживания движений и действий, чтобы они не зависели от частоты кадров.
Практическая часть
Создайте скрипт, который вращает объект вокруг своей оси с заданной скоростью.
using UnityEngine;
public class RotateObject : MonoBehaviour
{
public float rotationSpeed = 90f;
void Update()
{
transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);
}
}
Экзаменационный билет №8
Теоретическая часть
- Что такое Prefab и как его использовать в проекте?
- Чем отличается Instantiate от простого создания GameObject на сцене?
Ответы на теоретическую часть:
- Prefab — это шаблон объекта, который можно многократно использовать. Создаётся перетаскиванием GameObject из Hierarchy в Project. Используется через Instantiate().
- Instantiate создаёт копию объекта во время выполнения игры. Объект, созданный на сцене, существует всегда, тогда как Instantiate позволяет управлять временем появления и удаления объекта.
Практическая часть
Создайте скрипт, который при нажатии правой кнопки мыши создаёт префаб пули в позиции игрока и направляет её вперёд.
using UnityEngine;
public class ShootBullet : MonoBehaviour
{
public GameObject bulletPrefab;
public float bulletSpeed = 10f;
void Update()
{
if (Input.GetMouseButtonDown(1))
{
GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
Rigidbody rb = bullet.GetComponent<Rigidbody>();
if (rb != null)
{
rb.velocity = transform.forward * bulletSpeed;
}
}
}
}
Экзаменационный билет №9
Теоретическая часть
- Что такое ScriptableObject и в чём его преимущество перед обычными классами данных?
- Что такое Singleton и как его реализовать в Unity?
Ответы на теоретическую часть:
- ScriptableObject — это отдельный файл данных, который можно сохранить и использовать вне сцен. Позволяет хранить информацию (например, статы персонажей) и делиться ею между несколькими объектами.
- Singleton — это шаблон проектирования, гарантирующий существование одного экземпляра класса. Реализуется через статическое поле и DontDestroyOnLoad(gameObject).
Практическая часть
Создайте скрипт, который реализует Singleton для менеджера звука, предотвращающего повторное создание объекта при загрузке новой сцены.
using UnityEngine;
public class SoundManager : MonoBehaviour
{
private static SoundManager instance;
public static SoundManager Instance
{
get { return instance; }
}
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
}
Экзаменационный билет №10
Теоретическая часть
- Что такое корутины и как они помогают в управлении временными задержками?
- Что такое Canvas и какие режимы рендеринга он поддерживает?
Ответы на теоретическую часть:
- Корутины — это функции, которые могут приостанавливать своё выполнение. Запускаются через StartCoroutine(), останавливаются через StopCoroutine(). Используют yield return для задержек.
- Canvas — контейнер для UI-элементов. Режимы: Screen Space - Overlay (интерфейс поверх экрана), Screen Space - Camera (привязан к камере), World Space (интерфейс как 3D-объект в мире).
Практическая часть
Создайте скрипт, который каждые 3 секунды создаёт случайный объект из массива префабов в позиции игрока.
using UnityEngine;
public class RandomSpawner : MonoBehaviour
{
public GameObject[] prefabs;
public float spawnInterval = 3f;
void Start()
{
StartCoroutine(SpawnRoutine());
}
IEnumerator SpawnRoutine()
{
while (true)
{
int randomIndex = Random.Range(0, prefabs.Length);
Instantiate(prefabs[randomIndex], transform.position, Quaternion.identity);
yield return new WaitForSeconds(spawnInterval);
}
}
}
Экзаменационный билет №11
Теоретическая часть
- Что такое Tag и Layer? В чём их назначение и как они используются в Unity?
- Как работает метод GetComponent<T>() и где он может применяться?
Ответы на теоретическую часть:
- Tag — это метка объекта, используемая для идентификации (например, "Player", "Enemy"). Layer — группа объектов, используется для фильтрации взаимодействий (например, игнорировать столкновения между слоями).
- GetComponent<T>() — метод, позволяющий получить компонент указанного типа у GameObject. Используется, например, для получения Rigidbody или Animator из скрипта.
Практическая часть
Создайте скрипт, который при нажатии клавиши "F" находит все объекты с тегом "Enemy" и уничтожает их.
using UnityEngine;
public class DestroyEnemies : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.F))
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject enemy in enemies)
{
Destroy(enemy);
}
}
}
}
Экзаменационный билет №12
Теоретическая часть
- Что такое Time.timeScale и какие сценарии его использования вы можете привести?
- Что такое EventTrigger и как им пользоваться в UI?
Ответы на теоретическую часть:
- Time.timeScale управляет скоростью времени в игре. Значение 0 останавливает все процессы, связанные с временем. Часто используется для паузы, замедления игры.
- EventTrigger — компонент, позволяющий обрабатывать сложные события пользовательского ввода (например, наведение мыши, клик, пролистывание колеса).
Практическая часть
Напишите скрипт, который при наведении курсора на UI-элемент выводит сообщение в консоль.
using UnityEngine;
using UnityEngine.EventSystems;
public class HoverDetector : MonoBehaviour, IPointerEnterHandler
{
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("Курсор наведён на элемент: " + name);
}
}
Экзаменационный билет №13
Теоретическая часть
- Что такое Resources.Load и как он используется для загрузки ресурсов?
- Что такое PlayerPrefs.DeleteAll() и в каких случаях он применяется?
Ответы на теоретическую часть:
- Resources.Load — метод загрузки ресурсов во время выполнения из папки Resources. Пример: var prefab = Resources.Load<GameObject>("MyPrefab");
- PlayerPrefs.DeleteAll() удаляет все сохранённые данные. Может использоваться при сбросе прогресса или выходе из аккаунта.
Практическая часть
Создайте скрипт, который при запуске загружает префаб из папки Resources и создаёт его на сцене.
using UnityEngine;
public class LoadFromResources : MonoBehaviour
{
void Start()
{
GameObject prefab = Resources.Load<GameObject>("Prefabs/Player");
if (prefab != null)
{
Instantiate(prefab, Vector3.zero, Quaternion.identity);
}
else
{
Debug.LogError("Префаб не найден!");
}
}
}
Экзаменационный билет №14
Теоретическая часть
- Что такое Addressables и чем они отличаются от Resources?
- Что такое Cinemachine и зачем он используется?
Ответы на теоретическую часть:
- Addressables — это система загрузки и управления ресурсами, которая позволяет грузить их по запросу, в том числе с удалённых серверов. В отличие от Resources, они не загружаются автоматически и поддерживают гибкое управление памятью.
- Cinemachine — это система камер Unity, позволяющая создавать динамичные камеры с тряской, зумом, следованием за объектами и другими эффектами без ручного кодирования.
Практическая часть
Создайте скрипт, который при нажатии на кнопку сохраняет значение "score" равным 100 и загружает новую сцену.
using UnityEngine;
using UnityEngine.SceneManagement;
public class SaveAndLoad : MonoBehaviour
{
public void SaveScoreAndLoadScene()
{
PlayerPrefs.SetInt("score", 100);
PlayerPrefs.Save();
SceneManager.LoadScene("NextScene");
}
}
Экзаменационный билет №15
Теоретическая часть
- Что такое Sprite Atlas и как он помогает в оптимизации графики в 2D-играх?
- Что такое Sorting Layer и Order in Layer в 2D-проектах?
Ответы на теоретическую часть:
- Sprite Atlas — это текстура, объединяющая несколько спрайтов в одну. Уменьшает количество draw call'ов и ускоряет отрисовку.
- Sorting Layer задаёт глубину группы объектов, а Order in Layer — порядок внутри этого слоя. Вместе они определяют, какой объект будет поверх другого.
Практическая часть
Создайте скрипт, который изменяет спрайт объекта при нажатии клавиши "S".
using UnityEngine;
public class ChangeSprite : MonoBehaviour
{
public Sprite newSprite;
private SpriteRenderer spriteRenderer;
void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
if (newSprite != null && spriteRenderer != null)
{
spriteRenderer.sprite = newSprite;
}
}
}
}
(1) Кейс: "Ошибка в движке игрока — персонаж не двигается"
Описание кейса
Вы — начинающий Unity-разработчик, участвуете в разработке 2D-платформера. Ваша задача — реализовать базовое управление игроком: перемещение по горизонтали и прыжок.
Скрипт написан, компоненты добавлены, но при запуске игры персонаж не реагирует на нажатия клавиш A/D или стрелок , хотя код, по мнению студента, должен работать.
Вам нужно выявить возможные ошибки и предложить пути их исправления.
Исходный скрипт управления игроком
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
private Rigidbody2D rb;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
float moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
isGrounded = false;
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
isGrounded = true;
}
}
Информация о сцене
- Используется 2D-проект.
- GameObject
Player
- Компоненты:
SpriteRenderer
Rigidbody2D
BoxCollider2D
- Скрипт
PlayerController
прикреплён.
- Компоненты:
- Платформы имеют
BoxCollider2
- Нет консольных ошибок.
- Персонаж не двигается ни влево, ни вправо, и не прыгает.
Анализ ситуации и выявление проблем
Проблема №1: Ось "Horizontal" не настроена правильно или не работает
Проверка:
- Убедитесь, что ось
Horizontal
в Input Manager настроена какA/D
и←/→
- Проверьте через дебаггер: Debug.Log("Input Horizontal: " + Input.GetAxis("Horizontal"));
Решение:
Если ось не отвечает, настройте её в Edit → Project Settings → Input Manager → Axes
Проблема №2: Rigidbody2D может быть заблокирован
Проверка:
- В инспекторе проверьте, не заблокирован ли Rigidbody2D (в разделе Constraints).
- Убедитесь, что
isKinematic
не включён, если это не предусмотрено логикой.
Решение:
Снимите блокировку положения X/Y и Z-вращения, если необходимо.
Проблема №3: isGrounded всегда false
Проверка:
- Добавьте вывод в консоль: Debug.Log("Is Grounded: " + isGrounded);
- Возможно, коллизии не определяются корректно.
Решение:
Убедитесь, что платформы и персонаж имеют Collider2D
и они физически соприкасаются. Также можно использовать OnCollisionStay2D
для более надёжного обнаружения земли.
Проблема №4: Скорость Y не сохраняется корректно
Проверка:
Текущая строка:
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);
Это перезаписывает скорость, в том числе Y, что может мешать прыжкам.
Решение:
Измените на:
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);
(также можно вынести в отдельную переменную):
float currentYVelocity = rb.velocity.y;
rb.velocity = new Vector2(moveInput * moveSpeed, currentYVelocity);
Проблема №5: Не хватает гравитации или она слишком сильная
Проверка:
Проверьте значение gravityScale
у Rigidbody2D.
Решение:
Установите значение gravityScale = 1
или попробуйте увеличить jumpForce
чтобы преодолеть силу тяжести.
Итоговые рекомендации по доработке скрипта
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
private Rigidbody2D rb;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
if (rb == null)
{
Debug.LogError("Rigidbody2D не найден!");
}
}
void Update()
{
float moveInput = Input.GetAxis("Horizontal");
float currentYVelocity = rb.velocity.y;
rb.velocity = new Vector2(moveInput * moveSpeed, currentYVelocity);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
isGrounded = false;
Debug.Log("Прыжок выполнен");
}
Debug.Log("Input Horizontal: " + moveInput);
Debug.Log("Is Grounded: " + isGrounded);
}
private void OnCollisionEnter2D(Collision2D collision)
{
isGrounded = true;
Debug.Log("Столкновение с объектом: " + collision.gameObject.name);
}
private void OnCollisionStay2D(Collision2D collision)
{
isGrounded = true;
}
private void OnCollisionExit2D(Collision2D collision)
{
isGrounded = false;
}
}
Обучающие моменты
Дополнительные задания для самостоятельной работы
- Реализуйте анимацию прыжка и бега через Animator.
- Добавьте систему здоровья и взаимодействие с врагами.
- Сделайте так, чтобы игрок мог прыгнуть только дважды (double jump).
- Добавьте UI-индикатор, показывающий, находится ли персонаж на земле.
(2) Кейс: "Персонаж проваливается сквозь платформы — почему не работает гравитация и столкновения?"
Описание ситуации
Вы работаете над 2D-платформером. У вас есть персонаж с Rigidbody2D
и BoxCollider2D
, а также несколько платформ с BoxCollider2D
.
При запуске игры персонаж начинает падать, но не останавливается на платформах, а проваливается сквозь них .
Исходные данные
- Персонаж:
- Компоненты:
SpriteRenderer
Rigidbody2D
BoxCollider2D
- Скрипт
PlayerController
(простое управление)
- Компоненты:
- Платформа:
- Компоненты:
SpriteRenderer
BoxCollider2D
- Компоненты:
- Нет ошибок в консоли
- Персонаж падает, но не останавливается
Исходный скрипт PlayerController
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
float moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);
if (Input.GetKeyDown(KeyCode.Space))
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
}
}
}
Анализ ситуации и выявление возможных причин
Проблема 1: Отсутствует гравитация или она слишком мала
Как проверить:
Откройте инспектор у Rigidbody2D
→ параметр gravityScale
Возможная проблема:
Если gravityScale == 0
объект будет "парить". Если слишком мал, падение может быть незаметным.
Решение:
Установите значение gravityScale = 1
(или больше, если нужно ускорить падение).
Проблема 2: Коллайдеры не взаимодействуют
Как проверить:
Убедитесь, что у обоих объектов (Player
и Platform
) есть компоненты Collider2D
Также можно временно добавить в код:
void OnCollisionEnter2D(Collision2D col)
{
Debug.Log("Произошло столкновение с " + col.gameObject.name);
}
Возможная проблема:
Один из коллайдеров отключен, имеет флажок isTrigger
, или они имеют разные слои с отключёнными столкновениями.
Решение:
- Убедитесь, что
isTrigger == false
у обоих. - Проверьте настройки
Physics2D.IgnoreLayerCollision
в проекте. - Проверьте, что коллайдеры правильно покрывают объекты (можно включить Gizmos → Show Collider).
Проблема 3: Rigidbody2D у платформы или у игрока настроен неверно
Как проверить:
Если у платформы есть Rigidbody2D
, возможно, она помечена как isKinematic
, или её масса влияет на взаимодействие.
Возможная проблема:
Наличие Rigidbody2D
у статичной платформы без необходимости может вызвать странные эффекты.
Решение:
Уберите Rigidbody2D
у платформы, если она не двигается. Оставьте только у игрока.
Проблема 4: Объекты не соприкасаются визуально
Как проверить:
Включите режим Gizmos
в Scene View и проверьте, где находятся центры коллайдеров.
Возможная проблема:
Объекты могут быть расположены так, что коллайдеры не пересекаются.
Решение:
Подвиньте объекты ближе друг к другу или расширьте коллайдеры в инспекторе.
Проблема 5: Используется триггер вместо коллайдера
Как проверить:
Убедитесь, что у платформы и игрока свойство isTrigger == false
Возможная проблема:
Если один из коллайдеров является триггером, физическое взаимодействие не произойдёт.
Решение:
Снимите галочку isTrigger
для обоих объектов.
Итоговое решение: исправленный скрипт и рекомендации по настройке
Изменения в инспекторе
- У игрока:
Rigidbody2D
gravityScale = 1
isKinematic = false
BoxCollider2D
isTrigger = false
- У платформ:
- Удалить
Rigidbody2D
оставить толькоBoxCollider2D
isTrigger = false
- Удалить
Дополнительно в скрипте (по желанию)
private void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("Столкновение с " + collision.gameObject.name);
}
Обучающие моменты
Дополнительные задания для самостоятельной работы
- Реализуйте систему приземления, которая активирует анимацию или звук при касании земли.
- Добавьте движущуюся платформу, на которую игрок может прыгнуть.
- Создайте триггер, который активирует переход на следующий уровень при касании определённого объекта.
- Проверьте, чтобы игрок мог прыгнуть только тогда, когда находится на земле.
Ролевая игра №1: "Стартап-студия Unity"
Цель игры
Познакомить студентов с ключевыми этапами создания простого 2D-проекта в Unity, от идеи до первых рабочих механик.
Имитировать командную разработку, развить навыки коммуникации, распределения задач и решения технических проблем.
Формат
- Тип: Образовательная ролевая игра (настольная/виртуальная)
- Участники: 4–6 человек
- Продолжительность: 3–4 академических часа
- Материалы: доска, стикеры, карточки ролей, описание задания, шаблон проекта Unity
Сеттинг
Вы — молодая студия по разработке игр. Компания только начинает свою деятельность. Клиент заказал прототип 2D-платформера, который должен быть готов через несколько дней. У вас ограниченные ресурсы, но есть доступ к движку Unity и базовым инструментам.
Роли в команде
Каждый участник получает роль, связанную с разработкой:
Этапы игры
Этап 1: Брифинг
- Все участники получают роли.
- Геймдизайнер представляет концепцию игры (например, «бегунок с прыжками и монетками»).
- Менеджер проекта делает таймлайн из 3 фаз:
- Фаза 1: Игровой мир и управление
- Фаза 2: Добавление игровых объектов (монетки, враги)
- Фаза 3: Интерфейс и завершение проекта
Этап 2: Разработка
- Каждые 15 минут — короткая встреча (stand-up), где каждый участник отчитывается:
- Что сделал?
- Над чем работает?
- Есть ли блокеры?
Этап 3: Презентация
- Команда представляет свой прототип.
- Тестировщик демонстрирует найденные ошибки.
- Геймдизайнер оценивает соответствие ТЗ.
- Менеджер подводит итоги.
Обучающие эффекты
- Знакомство с жизненным циклом разработки игры
- Понимание роли каждого участника в процессе
- Опыт работы в команде и общения между специалистами
- Отладка и тестирование в реальном времени
- Первичное освоение Unity: создание сцен, добавление компонентов, написание скриптов
Возможные проблемы и вызовы во время игры
Дополнительно
- Можно использовать заранее подготовленный шаблон Unity-проекта с пустыми скриптами и ресурсами.
- По окончании игры можно провести обсуждение: что сработало, что можно улучшить, как лучше распределить роли.
Ролевая игра №2: "Эвакуация с планеты — Спасательная миссия"
Цель игры
Научить студентов работать с асинхронной загрузкой сцен, системой сохранений (PlayerPrefs), UI-интерфейсом и базовой логикой игровых состояний (например, победа/проигрыш).
Также развить навыки работы в условиях ограниченного времени и неопределенности.
Формат
- Тип: Образовательная ролевая игра
- Участники: 4–6 человек
- Продолжительность: 3–4 академических часа
- Материалы: доска, карточки задач, описание ролей, Unity-проект с шаблоном
Сеттинг
Действие происходит на отдалённой космической станции. Нестабильная звезда вот-вот взорвётся, и экипаж должен успеть эвакуироваться. Игроки — члены команды, которым нужно подготовить корабль к старту, собрав ресурсы, активировав системы и защитив станцию от внешних угроз.
Роли в команде
Этапы игры
Этап 1: Брифинг
- Геймдизайнер представляет концепцию: «Игрок должен собрать 5 элементов энергии, чтобы запустить корабль, пока не истёк таймер».
- Менеджер составляет план:
- Фаза 1: Загрузка уровня, создание интерфейса
- Фаза 2: Логика сбора предметов и таймера
- Фаза 3: Система сохранений и переход между уровнями
Этап 2: Разработка
- Команда делит задачи:
- Программист создаёт скрипты для взаимодействия с объектами
- Дизайнер добавляет UI: текст таймера, инвентарь, кнопки
- Специалист по сохранениям реализует сохранение количества собранных предметов
- Каждые 10–15 минут — короткая встреча для отчёта и обсуждения проблем
Этап 3: Презентация
- Команда демонстрирует прототип:
- Работает ли таймер?
- Сохраняется ли прогресс?
- Переходит ли игрок на следующий уровень при успехе?
- Тестировщик показывает найденные баги
- Геймдизайнер оценивает соответствие заданию
Обучающие эффекты
- Практика работы с UI : текст, кнопки, Canvas
- Изучение SceneManager.LoadScene() и SceneManager.LoadSceneAsync()
- Использование PlayerPrefs для сохранения прогресса
- Реализация игровых состояний: победа / проигрыш
- Работа в условиях ограниченного времени и совместной разработки
Возможные проблемы и вызовы во время игры
Дополнительно
- Можно использовать шаблон Unity-проекта с двумя сценами:
MainLevel
иEndScreen
- Предложить командам реализовать дополнительные фичи: музыку, звуки, простую анимацию
Ролевая игра №3: "Экспедиция на заброшенную базу — исследование и выживание"
Цель игры
Научить студентов работать с системой анимаций (Animator), триггерами, взаимодействием с объектами в 2D-среде, а также освоить работу с Particle System и простыми механиками инвентаря.
Имитировать процесс реализации игровых механик в условиях ограниченных ресурсов и необходимости быстрого принятия решений.
Формат
- Тип: Образовательная ролевая игра
- Участники: 4–6 человек
- Продолжительность: 3–4 академических часа
- Материалы: карточки задач, описание ролей, Unity-проект с минимальным шаблоном
Сеттинг
Команда исследователей прибывает на заброшенную научную базу на далёкой планете. Задача — найти дневник учёного, активировать аварийный маяк и эвакуироваться до того, как система безопасности полностью восстановится и уничтожит всё живое. Игрок должен перемещаться по зданию, открывать двери, собирать предметы и избегать ловушек.
Роли в команде
Этапы игры
Этап 1: Брифинг
- Геймдизайнер представляет концепцию:
- Игрок должен собрать 3 элемента, чтобы открыть дверь к дневнику.
- Ловушки активируются при неправильном взаимодействии.
- Время ограничено — если не успеешь, запускается режим "Паника".
- Менеджер составляет этапы:
- Фаза 1: Персонаж, его анимация и движение
- Фаза 2: Двери, ловушки, дневник
- Фаза 3: Интерфейс, завершение проекта
Этап 2: Разработка
- Команда делит задачи:
- Программист реализует управление и анимации (бег, стойка, приседание)
- Художник добавляет анимации через Animator Controller
- UI-дизайнер создаёт инвентарь и таймер
- Специалист по ловушкам настраивает триггеры и реакции
- Каждые 10–15 минут — короткая встреча для отчёта и обсуждения проблем
Этап 3: Презентация
- Команда демонстрирует прототип:
- Работают ли анимации?
- Можно ли собрать все предметы?
- Срабатывают ли ловушки?
- Тестировщик показывает найденные баги
- Геймдизайнер оценивает соответствие заданию
Обучающие эффекты
- Изучение работы с Animator , параметрами и переходами между анимациями
- Настройка триггеров и коллайдеров для взаимодействия с объектами
- Использование Particle System для создания эффектов (например, взрыв ловушки)
- Практика работы с инвентарём и отображением предметов в UI
- Работа в условиях ограниченного времени и совместной разработки
Возможные проблемы и вызовы во время игры
Дополнительно
- Можно использовать шаблон Unity-проекта с двумя комнатами, дверью и несколькими предметами
- Предложить командам реализовать дополнительные фичи: голосовое сопровождение, простую систему здоровья
Ролевая игра №4: "Квест в подземелье — сбор артефактов и побег"
Цель игры
Научить студентов работать с системой взаимодействия между объектами, триггерами, инвентарём, UI-элементами и базовой логикой головоломок.
Имитировать командную разработку с ограниченным временем на реализацию нескольких игровых механик.
Формат
- Тип: Образовательная ролевая игра
- Участники: 4–6 человек
- Продолжительность: 3–4 академических часа
- Материалы: карточки задач, описание ролей, Unity-проект с шаблоном
Сеттинг
Вы — исследователь, заблудившийся в древнем подземелье. Чтобы выбраться, вам нужно найти 3 артефакта, решить простую головоломку и открыть дверь к выходу. Но будьте осторожны: в темноте вас подстерегают ловушки, а время ограничено.
Роли в команде
Этапы игры
Этап 1: Брифинг
- Геймдизайнер представляет концепцию:
- Игрок должен собрать 3 артефакта.
- Активировать их в определённом порядке у алтаря.
- Избегать ловушек и выйти до истечения времени.
- Менеджер составляет этапы:
- Фаза 1: Персонаж, его управление и движение
- Фаза 2: Артефакты, головоломка, дверь
- Фаза 3: Интерфейс, завершение проекта
Этап 2: Разработка
- Команда делит задачи:
- Программист создаёт скрипты для взаимодействия с объектами
- Дизайнер добавляет UI: инвентарь, таймер, экраны победы и проигрыша
- Художник создаёт анимации ловушек
- Программист головоломки реализует логику активации артефактов
- Каждые 10–15 минут — короткая встреча для отчёта и обсуждения проблем
Этап 3: Презентация
- Команда демонстрирует прототип:
- Работает ли сбор предметов?
- Срабатывает ли головоломка при правильном порядке?
- Появляется ли экран победы?
- Тестировщик показывает найденные баги
- Геймдизайнер оценивает соответствие заданию
Обучающие эффекты
- Практика работы с интерфейсом и отображением данных (инвентарь, таймер)
- Использование Animator для анимаций персонажа и ловушек
- Настройка триггеров и коллайдеров для взаимодействия с объектами
- Реализация головоломок и логических условий
- Работа в условиях ограниченного времени и совместной разработки
Возможные проблемы и вызовы во время игры
Дополнительно
- Можно использовать шаблон Unity-проекта с двумя комнатами, дверью и несколькими предметами
- Предложить командам реализовать дополнительные фичи: голосовое сопровождение, простую систему здоровья
Интеллект-карта 1: Общая структура курса
Центральный узел:
Unity-разработчик (Junior)
Ветки:
-
Основы Unity
- Интерфейс Unity
- GameObject и компоненты
- Сцены и префабы
- Импорт ресурсов
-
Программирование на C#
- Переменные и типы данных
- Условия и циклы
- Методы и события
- Работа с компонентами Unity
-
Графика и анимация
- Спрайты и текстуры
- Анимации персонажей
- Sprite Editor и Tilemap
- Animator Controller
-
Физика и игровая логика
- Rigidbody и Collider
- Триггеры и взаимодействие
- Particle System
- Звуки и эффекты
-
Пользовательский интерфейс (UI)
- Canvas и элементы UI
- Кнопки, текст, слайдеры
- Реакция на действия игрока
-
Проектная работа
- Создание мини-игры
- Версионный контроль (Git)
- Подготовка билда
- Презентация проекта
Интеллект-карта 2: Поток разработки игры
Центральный узел:
Создание игры в Unity
Ветки:
-
Идея и планирование
- Концепция игры
- Описание механик
- Сценарий и дизайн документ
-
Подготовка среды
- Установка Unity Hub и движка
- Настройка проекта
- Подключение Git
-
Разработка прототипа
- Базовая механика
- Простое управление
- Первые скрипты
-
Детализация и реализация
- Добавление графики
- Улучшение физики
- Создание уровней
- Настройка UI
-
Тестирование и отладка
- Поиск багов
- Исправление ошибок
- Проверка на разных устройствах
-
Сборка и презентация
- Создание билда
- Написание описания
- Защита проекта перед командой
Интеллект-карта 3: Навыки Junior Unity-разработчика
Центральный узел:
Навыки Unity-разработчика (Junior)
Ветки:
-
Технические навыки
- Знание Unity Editor
- Умение работать с GameObject и компонентами
- Написание скриптов на C#
- Работа с физикой и анимацией
- Использование UI-системы
-
Инструменты
- Unity Hub и версии движка
- Visual Studio / Rider
- Git и GitHub
- Asset Store
-
Методологии
- Agile и Scrum (базовый уровень)
- Работа по задачам
- Управление временем
-
Личностные качества
- Самостоятельность
- Внимательность к деталям
- Коммуникация в команде
- Готовность к обучению
-
Портфолио и развитие
- Создание портфолио из 3–5 проектов
- Участие в хакатонах
- Изучение Middle-уровня
Интеллект-карта 4: Жизненный цикл GameObject
Центральный узел:
GameObject в Unity
Ветки:
-
Создание объекта
- Создание через меню Create
- Добавление компонентов
- Использование префабов
-
Компоненты
- Transform (положение, поворот, масштаб)
- Rigidbody (физическое тело)
- Collider (взаимодействие)
- SpriteRenderer (визуальное отображение)
- AudioSource (звук)
-
Жизненный цикл MonoBehaviour
- Awake()
- OnEnable()
- Start()
- Update(), FixedUpdate(), LateUpdate()
- OnDestroy()
-
Управление объектом
- Через скрипты (C#)
- С помощью анимаций
- Через пользовательский интерфейс
-
Удаление и деактивация
- Destroy()
- SetActive(false)
- Работа с пулом объектов (опционально)
Как использовать эти ментальные карты:
- На занятиях: как вводная часть перед началом модуля.
- Для самоподготовки: студент может распечатать или сохранить в виде схемы и использовать как чек-лист.
- В командной работе: как основа для распределения задач.
- Для преподавателя: как шаблон для создания визуального контента в формате PDF, Canva, XMind, MindMaster и др.
1. Учебное пособие
Название: Игровое программирование на C# и Unity
Автор: Кит Амос
Год издания: 2021
Краткое описание:
Практическое руководство по разработке игр с нуля с акцентом на язык C# и движок Unity. Подходит для начинающих, содержит примеры кода, упражнения и проекты.
2. Методические рекомендации
Название: Методика преподавания основ Unity-разработки в системе профессионального обучения
Автор: Министерство образования и науки РФ (методическое пособие для преподавателей)
Год издания: 2022
Краткое описание:
Содержит рекомендации по построению учебных модулей, структурированию занятий, организации практической деятельности обучающихся и оценке результатов.
3. Задачник
Название: Практикум по Unity: задачи и решения для начинающих разработчиков
Автор: Смирнов А.А., Лаптев А.Н.
Год издания: 2020
Краткое описание:
Сборник практических заданий по работе с Unity Editor, написанию скриптов, созданию UI, физике и анимации. Предусмотрены варианты разной сложности и эталонные решения.
4. Хрестоматия
Название: Чтения по разработке игр: классические статьи, интервью и эссе
Составитель: Джефф Орлинг
Год издания: 2019
Краткое описание:
Подборка текстов от известных гейдевов, историй создания популярных игр, взглядов на игровой дизайн и проектирование механик. Повышает общую культуру и мотивацию.
5. Научная литература
Название: Основы компьютерных игр: теория, практика и методология разработки
Автор: Джейсон Грегори
Год издания: 2021
Краткое описание:
Фундаментальный труд по теории создания игр, включая архитектуру движков, работу с графикой, звуком и физикой. Полезен как справочник и база для углубленного изучения.
1. Официальная документация Unity
https://docs.unity3d.com/Manual/index.html
Описание:
Полная и актуальная документация по Unity Editor, API, компонентам, скриптам, графике, физике и многому другому. Незаменимый справочный ресурс для разработчиков.
2. Unity Learn
https://learn.unity.com
Описание:
Платформа от самой компании Unity с бесплатными и платными курсами, туториалами, проектами и заданиями. Подходит для самостоятельного изучения и практики.
3. Habrahabr / GeekBrains — статьи по Unity
https://habr.com/ru/search/?q=unity+разработка
https://geekbrains.ru
Описание:
Сайты с практическими статьями, разборами кода, советами и примерами реализации игровых механик на Unity. Полезны для расширения кругозора и решения конкретных задач.
4. GitHub (репозитории с примерами Unity-проектов)
https://github.com/search?q=unity+project
Описание:
Платформа для поиска open-source Unity-проектов, учебных примеров, готовых решений и библиотек. Позволяет изучать чужой код и применять его в своих задачах.
5. RU: Stack Overflow и Unity-сообщество на Reddit
https://ru.stackoverflow.com/questions/tagged/unity3d
https://www.reddit.com/r/Unity3D/
Описание:
Форумы, где можно найти ответы на распространённые ошибки, задать вопросы и получить помощь от сообщества Unity-разработчиков.
-
Основы Unity: создание первой игры с нуля
Изучите интерфейс Unity, работу с объектами и напишите свой первый скрипт. -
Unity Junior Developer: от обучения к портфолио
Освойте базовые инструменты разработки игр и создайте 3 проекта для портфолио. -
Разработка 2D-игр на Unity: практика для новичков
Научитесь создавать платформеры, головоломки и мини-аркады в двухмерном пространстве. -
Unity за 80 часов: стартовая подготовка разработчика игр
Быстрое погружение в движок Unity и язык C# с финальным практическим проектом. -
Создание игр на Unity: базовый уровень для начинающих
Курс для тех, кто хочет научиться работать с Unity без предварительного опыта. -
Unity Junior Lab: мини-проекты для начинающих разработчиков
Практический подход к обучению через реализацию коротких игровых проектов. -
Программирование на C# в Unity: от переменной до механики
Изучите основы языка C# и его применение в игровой логике. -
Unity для школьников: первые шаги в геймдеве
Образовательный курс по созданию игр для подростков 12–17 лет. -
Unity-разработчик с нуля: теория + практика
Структурированный курс по освоению Unity с акцентом на практические навыки. -
Unity Junior School: путь к первой работе в игровой индустрии
Подготовка к роли Junior Unity Developer с реальными задачами и проектами. -
Геймдев для новичков: как создать игру в Unity
Краткий курс по основам создания игр — от идеи до первого билда. -
Unity Game Dev Starter Pack: начни разрабатывать игры уже сегодня
Минимальный набор знаний и инструментов для запуска собственного игрового проекта. -
Unity и C#: комплексное обучение для будущих разработчиков
Одновременное изучение движка Unity и языка программирования C#. -
Unity Junior Bootcamp: базовый уровень за 2 месяца
Интенсивное обучение с фокусом на получении практических навыков. -
Unity-разработка: создание 2D и 3D игр с нуля
Освойте основы работы с двумя популярными форматами игровых проектов. -
Игровая физика и анимация в Unity
Изучите движение, прыжки, столкновения и анимационные системы. -
Пользовательский интерфейс в Unity: от кнопки до меню
Научитесь создавать UI/UX для игр: текст, кнопки, инвентарь, здоровье. -
Создание уровней в Unity: Tilemap, триггеры, камеры
Работа с инструментами уровня, дизайн игрового пространства. -
Тестирование и отладка в Unity: основы QA для разработчика
Поиск багов, работа с консолью, проверка стабильности проекта. -
Git и командная работа в Unity: версионный контроль
Использование Git и GitHub для совместной разработки проектов. -
Создание мобильных игр на Unity
Подготовка и сборка проектов под Android и iOS. -
Unity и звуки: работа с аудио в игровом проекте
Добавление музыки, звуковых эффектов и реакции на события. -
Unity Junior Project: разработка полноценной мини-игры
Завершение самостоятельного проекта от идеи до готовой сборки. -
Как устроиться Junior Unity-разработчиком: карьерный курс
Подготовка резюме, портфолио, прохождение собеседования. -
Unity Challenge: решаем реальные задачи разработчика
Курс в формате задач и кейсов, имитирующий рабочие ситуации.
Нет элементов для просмотра