Unity-разработчик (Junior)

Курс «Unity-разработчик (Junior)» предназначен для начинающих и школьников. Вы освоите основы разработки игр в Unity, изучите C#, работу с графикой и анимацией, физику движка и создание простых игровых проектов. Курс даст практические навыки и подготовит к самостоятельной работе над играми.

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

 

Что предстоит пройти на курсе:

  • Основы работы с Unity: интерфейс, объекты, компоненты, сцены
  • Программирование на языке C#: переменные, условия, циклы, события
  • Создание игровых механик: управление персонажем, взаимодействие с объектами
  • Работа с графикой: импорт ресурсов, работа с 2D и 3D моделями
  • Анимация: использование Animator, создание анимированных персонажей
  • UI/UX: создание меню, кнопок, индикаторов здоровья и очков
  • Физика: применение Rigidbody, Collider, триггеров, частиц
  • Версионный контроль: начальные навыки работы с Git и GitHub
  • Итоговая проектная работа: от замысла до готового билда игры
 

Ожидаемые результаты после прохождения курса:
Слушатель должен уметь:

  • Создавать простые 2D и 3D игры в Unity
  • Писать скрипты на C# для реализации игровой логики
  • Настроить анимации, физику и взаимодействие объектов
  • Разрабатывать пользовательский интерфейс
  • Использовать версионный контроль при работе над проектами
  • Подготовить портфолио из нескольких завершённых проектов
 

Слушатель должен знать:

  • Структуру и основные инструменты движка Unity
  • Базовые принципы программирования на C#
  • Механизмы работы с анимацией, графикой и физикой
  • Основы проектирования пользовательского интерфейса
  • Принципы организации кода и проекта в Unity
 

Дополнительно:

  • Введение в Agile и Scrum-методологии
  • Советы по трудоустройству: составление резюме, подготовка к собеседованию
  • Рекомендации по развитию в сфере геймдева
 

Итоговая аттестация:

  • Выполнение и защита дипломного проекта
  • Тестирование знаний по пройденным темам
  • Получение сертификата об окончании курса
  1. Что такое Unity и для чего он используется?
    Unity — это кроссплатформенный игровой движок, используемый для разработки 2D и 3D игр, симуляций, интерактивных приложений и VR/AR-контента. Он предоставляет инструменты для создания графики, физики, анимаций, звука и логики игры.

  2. Какие основные окна в интерфейсе Unity вы знаете?
    Основные окна: Scene (редактор сцены), Game (отображает игру во время воспроизведения), Hierarchy (список объектов на сцене), Project (файлы проекта), Inspector (параметры выбранных объектов).

  3. Что такое GameObject и как его создать?
    GameObject — это базовый элемент в Unity, представляющий любой объект в игре. Создать можно через правую кнопку мыши в Hierarchy → Create Empty или выбрать шаблоны (например, 3D Object → Cube).

  4. Что такое компоненты в Unity? Приведите примеры.
    Компоненты — это функциональные модули, добавляемые к GameObject. Примеры: Transform (позиция, поворот, масштаб), Rigidbody (физика), Collider (обнаружение столкновений), SpriteRenderer (отображение спрайтов).

  5. Что такое Transform и какие данные он хранит?
    Transform — это компонент, который определяет позицию, вращение и масштаб объекта в пространстве сцены.

  6. Как работают методы Start() и Update()?
    Start() вызывается один раз при запуске игры после завершения инициализации. Update() вызывается каждый кадр и используется для реализации игровой логики, например, обработки ввода.

  7. Что такое C# и почему он используется в Unity?
    C# — это современный язык программирования, поддерживающий ООП. Unity использует C# благодаря его мощным возможностям и хорошей интеграции с движком.

  8. Что такое переменная и какие типы данных существуют в C#?
    Переменная — это контейнер для хранения данных. Типы данных: int (целое число), float (дробное число), string (текст), bool (логическое значение true/false), Vector2/Vector3 (координаты) и др.

  9. Что такое коллайдеры и зачем они нужны?
    Коллайдеры — это компоненты, отвечающие за взаимодействие объектов между собой и физикой. Они позволяют обнаруживать столкновения и триггеры.

  10. Чем отличается Collider от Trigger?
    Collider реагирует на столкновения, останавливая объекты. Trigger позволяет объектам проходить сквозь него, но вызывает событие при пересечении.

  11. Что такое Rigidbody и какие его основные свойства?
    Rigidbody — это компонент, позволяющий объекту подчиняться законам физики. Свойства: масса, гравитация, сопротивление воздуха, булевы флаги типа isKinematic.

  12. Как создать и запустить простую анимацию в Unity?
    Создать анимацию: Window → Animation → Create. Добавить ключевые кадры для параметров объекта (например, позиции). Назначить анимацию компоненту Animator и запустить игру.

  13. Что такое UI и какие элементы интерфейса есть в Unity?
    UI — это пользовательский интерфейс. Элементы: Button, Text, Image, Slider, Toggle, InputField и другие, размещаются внутри Canvas.

  14. Как работает система событий в Unity UI?
    События, такие как нажатия на кнопку, обрабатываются через компонент EventSystem и классы ввода. Для реакции на действия пользователя используются делегаты и подписка на события.

  15. Что такое PlayerPrefs и как им пользоваться?
    PlayerPrefs — это простой способ сохранять данные между запусками игры. Используется для хранения чисел, строк. Методы: SetInt(), GetInt(), Save().

  16. Что такое SceneManager и как переключаться между сценами?
    SceneManager — это класс, управляющий загрузкой и выгрузкой сцен. Для перехода используется SceneManager.LoadScene("SceneName").

  17. Что такое Instantiate и Destroy?
    Instantiate создаёт копию объекта во время выполнения. Destroy удаляет объект из сцены. Оба часто используются для создания и удаления объектов во время игры.

  18. Что такое корутины и как их использовать?
    Корутины — это функции, которые могут приостанавливать своё выполнение. Запускаются через StartCoroutine(), останавливаются через StopCoroutine(). Используют yield return для задержек.

  19. Что такое Tag и Layer?
    Tag — это метка для идентификации объектов. Layer — группа объектов, используемая для фильтрации взаимодействий, например, для физических столкновений или отрисовки.

  20. Что такое Canvas и какие режимы рендеринга он поддерживает?
    Canvas — это контейнер для UI-элементов. Режимы: Screen Space - Overlay (интерфейс всегда поверх экрана), World Space (интерфейс как 3D-объект), Screen Space - Camera (интерфейс привязан к камере).

  21. Что такое ScriptableObject и в чём его преимущество?
    ScriptableObject — это отдельный файл данных, который можно использовать вне сцен. Позволяет хранить информацию (например, статы персонажей) и делиться ею между несколькими объектами.

  22. Как получить доступ к другому компоненту из скрипта?
    Через метод GetComponent<T>(), где T — тип нужного компонента. Например: Rigidbody rb = GetComponent<Rigidbody>();

  23. Что такое Time.deltaTime и зачем он нужен?
    Time.deltaTime — это время, прошедшее между кадрами. Используется для плавного движения, чтобы скорость не зависела от частоты кадров.

  24. Как обрабатывать ввод пользователя в Unity?
    Ввод обрабатывается через класс Input. Например, Input.GetKey(KeyCode.Space) проверяет, нажата ли клавиша пробела.

  25. Что такое асинхронная загрузка сцен и как её реализовать?
    Асинхронная загрузка позволяет загружать сцены без зависания игры. Реализуется через SceneManager.LoadSceneAsync("SceneName").

  26. Что такое Prefab и как его использовать в проекте?
    Prefab — это шаблон объекта, который можно многократно использовать в сцене. Создается перетаскиванием GameObject из Hierarchy в Project. Для создания копии используется Instantiate().

  27. Как работают условия if-else в C# и где они применяются в Unity?
    Условия if-else позволяют выполнять разные блоки кода в зависимости от истинности выражения. В Unity часто используются для проверки состояния объектов, например, здоровья персонажа или нажатия клавиш.

  28. Что такое циклы в C# и какие виды циклов существуют?
    Циклы — это конструкции, позволяющие повторять выполнение кода. В C# есть: for (повтор заданное количество раз), while (пока условие истинно), foreach (для элементов коллекции).

  29. Что такое массив и как его объявить в C#?
    Массив — это структура данных, хранящая набор значений одного типа. Объявление: int[] numbers = new int[5]; или string[] names = { "John", "Alice" };

  30. Что такое функция и как её создать в C#?
    Функция — это блок кода, выполняющий определённую задачу. Создание: void MyFunction() { /* код */ }, вызов: MyFunction();.

  31. Что такое Vector2 и Vector3 и где они применяются в Unity?
    Vector2 — двумерный вектор (x, y), используется в 2D. Vector3 — трёхмерный вектор (x, y, z), используется в 3D. Применяются для позиций, направлений и перемещений.

  32. Что такое инкапсуляция в ООП и как она реализуется в C#?
    Инкапсуляция — это принцип скрытия внутренней реализации класса. Реализуется через модификаторы доступа: public, private, protected.

  33. Что такое наследование в ООП и как его использовать в Unity?
    Наследование позволяет одному классу (производному) наследовать поля и методы другого класса (базового). Например: public class Enemy : MonoBehaviour.

  34. Что такое полиморфизм в ООП и как он работает в C#?
    Полиморфизм позволяет объектам разных классов обрабатываться как объекты одного базового класса. Реализуется через переопределение методов с virtual/override.

  35. Что такое Rigidbody2D и чем он отличается от Rigidbody?
    Rigidbody2D — компонент физики для 2D-объектов. Отличается от обычного Rigidbody тем, что работает в двухмерном пространстве и имеет свои свойства и методы.

  36. Что такое Collider2D и какие типы коллайдеров бывают в 2D?
    Collider2D — компонент для взаимодействия с физикой в 2D. Типы: BoxCollider2D, CircleCollider2D, PolygonCollider2D, EdgeCollider2D.

  37. Что такое анимационный контроллер (Animator Controller)?
    Animator Controller — файл, управляющий логикой переходов между анимациями. Позволяет задавать условия перехода через параметры (bool, trigger, float и др.).

  38. Как добавить звук в Unity и воспроизвести его во время игры?
    Загрузите аудиофайл в проект, добавьте AudioSource на GameObject и назначьте AudioClip. Воспроизведение: audioSource.Play();.

  39. Что такое AudioListener и зачем он нужен?
    AudioListener — компонент, обычно добавляемый к камере, который слушает звуки в сцене и воспроизводит их в соответствии с положением источника.

  40. Что такое Time.timeScale и как его использовать?
    Time.timeScale управляет скоростью времени в игре. Значение 0 останавливает все процессы, связанные с временем. Используется, например, для паузы или замедления игры.

  41. Что такое SceneManager и как проверить текущую активную сцену?
    SceneManager — класс для управления сценами. Активная сцена получается через SceneManager.GetActiveScene().name.

  42. Что такое InvokeRepeating и как его использовать?
    InvokeRepeating вызывает метод с заданным интервалом. Пример: InvokeRepeating("SpawnEnemy", 2f, 1f); — запускает SpawnEnemy через 2 секунды и каждую 1 секунду после этого.

  43. Что такое EventTrigger и как им пользоваться в UI?
    EventTrigger — компонент, позволяющий обрабатывать сложные события пользовательского ввода (например, наведение мыши, клик, пролистывание колеса).

  44. Как сохранить и загрузить данные в PlayerPrefs?
    Сохранение: PlayerPrefs.SetInt("score", 100); PlayerPrefs.Save();
    Загрузка: int score = PlayerPrefs.GetInt("score");

  45. Что такое SceneManager.LoadSceneAsync() и почему он используется?
    LoadSceneAsync позволяет загружать сцену в фоновом режиме, чтобы не зависала игра. Часто используется с прогресс-баром загрузки.

  46. Что такое DontDestroyOnLoad и когда он применяется?
    DontDestroyOnLoad — метод, предотвращающий уничтожение объекта при загрузке новой сцены. Используется для объектов, которые должны существовать всё время игры, например, менеджера звука.

  47. Что такое корутины и как они помогают в управлении временными задержками?
    Корутины позволяют выполнять код с задержкой без блокировки основного потока. Например: yield return new WaitForSeconds(2f); — ожидание 2 секунды.

  48. Что такое Canvas Scaler и зачем он нужен?
    Canvas Scaler — компонент, регулирующий масштаб интерфейса под разные разрешения экрана, обеспечивая корректное отображение UI.

  49. Что такое TextMeshPro и чем он лучше стандартного Text?
    TextMeshPro — расширенный компонент для отображения текста. Предоставляет больше возможностей по оформлению, производительности и гибкости по сравнению со стандартным Text.

  50. Что такое Asset Store и как им пользоваться?
    Asset Store — магазин цифровых активов для Unity. Можно находить и скачивать модели, текстуры, скрипты, плагины и другие ресурсы для проекта прямо внутри Unity Editor.

  51. Что такое MonoBehaviour и какую роль он играет в Unity?
    MonoBehaviour — это базовый класс для всех скриптов, прикрепляемых к GameObject. Он предоставляет методы жизненного цикла (Start, Update и др.) и доступ к системе Unity.

  52. Какие основные этапы жизненного цикла скрипта в Unity вы знаете?
    Awake (вызывается при инициализации), OnEnable (при активации объекта), Start (перед первым кадром), Update (каждый кадр), LateUpdate (после Update), FixedUpdate (для физики), OnDisable, OnDestroy.

  53. В чём разница между Awake и Start?
    Awake вызывается сразу при инициализации объекта, даже если он не активен. Start вызывается перед первым кадром только у активных объектов.

  54. Что такое Debug.Log и для чего он используется?
    Debug.Log — метод вывода сообщений в консоль Unity. Используется для отладки: проверки значений переменных, логирования событий и поиска ошибок.

  55. Что такое Input.GetAxis и как он используется в управлении персонажем?
    Input.GetAxis("Horizontal") или "Vertical" возвращает значение от -1 до 1, основанное на нажатии клавиш (например, стрелок или WASD). Используется для плавного управления движением.

  56. Что такое Vector3.MoveTowards и как его использовать?
    Vector3.MoveTowards позволяет перемещать объект к заданной точке с заданной скоростью. Пример: transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);

  57. Что такое Quaternion.LookRotation и где применяется?
    Quaternion.LookRotation создаёт поворот, направленный в определённую сторону. Часто используется для поворота камеры или объекта к другому объекту.

  58. Что такое Instantiate и какие параметры он принимает?
    Instantiate создаёт копию объекта. Принимает оригинал, позицию, поворот и, опционально, родителя: Instantiate(prefab, position, rotation, parent);

  59. Что такое Destroy и как указать задержку уничтожения объекта?
    Destroy(gameObject, 2f); — уничтожит объект через 2 секунды после вызова. Это полезно для временных объектов, например, частиц или бонусов.

  60. Что такое Singleton и как его реализовать в Unity?
    Singleton — это шаблон проектирования, гарантирующий существование только одного экземпляра класса. Реализуется через статическое поле и DontDestroyOnLoad.

  61. Что такое LayerMask и как его использовать в Physics.Raycast?
    LayerMask позволяет ограничить выборку объектов по слоям. Например: Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask); — будет учитывать только объекты нужного слоя.

  62. Что такое Raycast и где он применяется?
    Raycast — это "луч", используемый для обнаружения столкновений в сцене. Применяется для стрельбы, выбора объектов мышью, обнаружения препятствий и т.д.

  63. Что такое SceneManager.sceneLoaded и как подписаться на событие загрузки сцены?
    Это событие вызывается при загрузке новой сцены. Подписка: SceneManager.sceneLoaded += OnSceneLoaded;

  64. Что такое Resources.Load и как им пользоваться?
    Resources.Load — метод загрузки ресурсов во время выполнения из папки Resources. Пример: var prefab = Resources.Load<GameObject>("MyPrefab");

  65. Что такое PlayerPrefs.HasKey и зачем он нужен?
    PlayerPrefs.HasKey проверяет, существует ли сохранённое значение по указанному ключу. Полезно при проверке наличия сохранённых данных перед их чтением.

  66. Что такое SceneManager.UnloadSceneAsync и когда он используется?
    Метод асинхронной выгрузки сцены. Используется, чтобы освободить память, когда сцена больше не нужна.

  67. Что такое Animation Event и как его добавить?
    Animation Event — это вызов метода в определённый момент анимации. Добавляется в окне Animation при редактировании клипа.

  68. Что такое Animator Override Controller и зачем он нужен?
    Animator Override Controller позволяет заменять анимации в существующем Animator Controller'е без изменения оригинала. Используется для гибкой настройки анимаций разных персонажей.

  69. Что такое Sprite Atlas и как он помогает в оптимизации?
    Sprite Atlas — это текстура, объединяющая несколько спрайтов в одну. Уменьшает количество draw call'ов и ускоряет отрисовку.

  70. Что такое Sorting Layer и Order in Layer в 2D-проектах?
    Sorting Layer задаёт глубину группы объектов, а Order in Layer — порядок внутри этого слоя. Вместе они определяют, какой объект будет поверх другого.

  71. Что такое Rigidbody2D.velocity и чем он отличается от Transform.position?
    Rigidbody2D.velocity применяет физическое движение, учитывая массу и другие свойства тела. Transform.position изменяет позицию напрямую, что может нарушать физику.

  72. Что такое Collider2D.isTrigger и как он влияет на взаимодействие?
    Если isTrigger включён, коллайдер не блокирует физические объекты, но вызывает события OnTriggerEnter2D/Exit/Stay.

  73. Что такое Joint2D и какие типы соединений бывают?
    Joint2D связывает два объекта физически. Типы: HingeJoint2D (шарнир), DistanceJoint2D (расстояние), FixedJoint2D (фиксированная связь) и др.

  74. Что такое Cinemachine и зачем он используется?
    Cinemachine — это система камер Unity, позволяющая создавать динамичные камеры с тряской, зумом, следованием за объектами и другими эффектами без ручного кодирования.

  75. Что такое Addressables и чем они отличаются от Resources?
    Addressables — это система загрузки и управления ресурсами, которая позволяет грузить их по запросу, в том числе с удалённых серверов. В отличие от Resources, они не загружаются автоматически и поддерживают гибкое управление памятью.

  1. Какой язык программирования используется в Unity для написания скриптов?
    A) Java
    B) C#
    C) Python
    D) JavaScript
    Правильный ответ: B) C#

  2. Какой компонент отвечает за физическое поведение объекта в Unity?
    A) Transform
    B) Rigidbody
    C) Collider
    D) Animator
    Правильный ответ: B) Rigidbody

  3. Что такое GameObject в Unity?
    A) Скрипт
    B) Основной элемент сцены
    C) Анимация
    D) Материал
    Правильный ответ: B) Основной элемент сцены

  4. Какой компонент управляет позицией, вращением и масштабом объекта?
    A) Rigidbody
    B) Collider
    C) Transform
    D) Renderer
    Правильный ответ: C) Transform

  5. Какой тип проекта позволяет работать как с 2D, так и с 3D графикой?
    A) 2D
    B) 3D
    C) Universal
    D) Custom
    Правильный ответ: C) Universal

  6. Что такое Prefab в Unity?
    A) Графический файл
    B) Заготовка объекта, которую можно повторно использовать
    C) Тип анимации
    D) Формат звука
    Правильный ответ: B) Заготовка объекта, которую можно повторно использовать

  7. Как добавить новый объект на сцену?
    A) Через консоль
    B) Правой кнопкой мыши в Hierarchy → Create Empty
    C) В меню Window
    D) В инспекторе
    Правильный ответ: B) Правой кнопкой мыши в Hierarchy → Create Empty

  8. Какой метод вызывается при запуске игры один раз?
    A) Update()
    B) Start()
    C) FixedUpdate()
    D) LateUpdate()
    Правильный ответ: B) Start()

  9. Какой метод вызывается каждый кадр?
    A) Start()
    B) Update()
    C) Awake()
    D) OnEnable()
    Правильный ответ: B) Update()

  10. Что делает метод Debug.Log()?
    A) Запускает игру
    B) Выводит сообщение в консоль
    C) Сохраняет данные
    D) Перезапускает сцену
    Правильный ответ: B) Выводит сообщение в консоль

  11. Какое расширение имеют файлы сцен в Unity?
    A) .unity
    B) .scene
    C) .u3d
    D) .asset
    Правильный ответ: A) .unity

  12. Какой элемент отвечает за отображение спрайта на экране?
    A) SpriteRenderer
    B) TextMeshPro
    C) Camera
    D) Light
    Правильный ответ: A) SpriteRenderer

  13. Что такое UI в Unity?
    A) Управление физикой
    B) Работа с аудио
    C) Интерфейс пользователя
    D) Система частиц
    Правильный ответ: C) Интерфейс пользователя

  14. Какой компонент используется для создания кнопок в интерфейсе?
    A) Text
    B) Image
    C) Button
    D) Slider
    Правильный ответ: C) Button

  15. Какой компонент отвечает за воспроизведение звука?
    A) AudioSource
    B) AudioListener
    C) SoundManager
    D) AudioClip
    Правильный ответ: A) AudioSource

  16. Какой компонент необходим на камере для воспроизведения звука?
    A) AudioSource
    B) AudioListener
    C) SoundManager
    D) AudioClip
    Правильный ответ: B) AudioListener

  17. Что такое Collider?
    A) Объект сцены
    B) Компонент, определяющий физические свойства
    C) Компонент, задающий форму объекта для взаимодействия с физикой
    D) Скрипт
    Правильный ответ: C) Компонент, задающий форму объекта для взаимодействия с физикой

  18. Какой компонент позволяет запускать анимацию?
    A) Animation
    B) Animator
    C) Rigidbody
    D) Collider
    Правильный ответ: B) Animator

  19. Как создать новую анимацию в Unity?
    A) Создать скрипт
    B) Нажать правой кнопкой в Project → Create → Animation
    C) Добавить Collider
    D) Выбрать из Asset Store
    Правильный ответ: B) Нажать правой кнопкой в Project → Create → Animation

  20. Какой метод вызывается при столкновении объектов?
    A) OnCollisionEnter()
    B) OnTriggerEnter()
    C) OnMouseDown()
    D) OnBecameVisible()
    Правильный ответ: A) OnCollisionEnter()

  21. Какой метод вызывается при входе в триггер?
    A) OnCollisionEnter()
    B) OnTriggerEnter()
    C) OnMouseDown()
    D) OnBecameVisible()
    Правильный ответ: B) OnTriggerEnter()

  22. Какой компонент отвечает за движение камеры?
    A) Rigidbody
    B) Camera
    C) Transform
    D) Collider
    Правильный ответ: B) Camera

  23. Какой тип переменной используется для хранения текста?
    A) int
    B) float
    C) bool
    D) string
    Правильный ответ: D) string

  24. Какой тип переменной хранит значение "истина" или "ложь"?
    A) int
    B) float
    C) bool
    D) string
    Правильный ответ: C) bool

  25. Как сохранить проект в Unity?
    A) File → Save Scene
    B) Ctrl + Z
    C) Play
    D) Build Settings
    Правильный ответ: A) File → Save Scene

  26. Что такое Asset в Unity?
    A) Объект на сцене
    B) Внешний ресурс, используемый в проекте (например, текстура или модель)
    C) Компонент физики
    D) Метод скрипта
    Правильный ответ: B) Внешний ресурс, используемый в проекте (например, текстура или модель)

  27. Какой компонент отвечает за отображение 3D модели?
    A) SpriteRenderer
    B) MeshRenderer
    C) TextMeshPro
    D) LineRenderer
    Правильный ответ: B) MeshRenderer

  28. Какое окно в Unity используется для написания скриптов?
    A) Scene
    B) Game
    C) Project
    D) Inspector
    Правильный ответ: C) Project

  29. Какое действие выполняет оператор "==" в C#?
    A) Присваивание значения
    B) Сравнение на равенство
    C) Увеличение числа на 1
    D) Вызов функции
    Правильный ответ: B) Сравнение на равенство

  30. Что означает ключевое слово "public" в объявлении переменной в C#?
    A) Переменная доступна только внутри класса
    B) Переменная будет отображаться в инспекторе Unity и доступна из других скриптов
    C) Переменная является статической
    D) Переменная не может быть изменена
    Правильный ответ: B) Переменная будет отображаться в инспекторе Unity и доступна из других скриптов

  31. Что делает метод GetComponent<T>()?
    A) Добавляет новый компонент объекту
    B) Удаляет компонент у объекта
    C) Получает ссылку на существующий компонент объекта
    D) Создаёт копию объекта
    Правильный ответ: C) Получает ссылку на существующий компонент объекта

  32. Какой тип коллайдера используется для круга в 2D?
    A) BoxCollider2D
    B) CircleCollider2D
    C) CapsuleCollider2D
    D) PolygonCollider2D
    Правильный ответ: B) CircleCollider2D

  33. Что такое Instantiate в Unity?
    A) Уничтожает объект
    B) Создаёт копию объекта во время выполнения
    C) Загружает новую сцену
    D) Останавливает воспроизведение аудио
    Правильный ответ: B) Создаёт копию объекта во время выполнения

  34. Какой метод вызывается при уничтожении объекта?
    A) Start()
    B) OnDestroy()
    C) OnDisable()
    D) Update()
    Правильный ответ: B) OnDestroy()

  35. Что такое Time.deltaTime?
    A) Время, прошедшее с последнего кадра
    B) Общее время игры
    C) Постоянная величина
    D) Время между нажатиями мыши
    Правильный ответ: A) Время, прошедшее с последнего кадра

  36. Как создать пустой GameObject программно?
    A) GameObject.Create()
    B) new GameObject()
    C) Instantiate(new GameObject())
    D) GameObject.Find("name")
    Правильный ответ: B) new GameObject()

  37. Какой компонент управляет освещением в сцене?
    A) Camera
    B) Light
    C) Rigidbody
    D) Collider
    Правильный ответ: B) Light

  38. Что происходит при вызове Destroy(gameObject)?
    A) Объект перемещается в корзину
    B) Объект уничтожается в конце кадра
    C) Объект становится невидимым
    D) Объект блокируется от взаимодействия
    Правильный ответ: B) Объект уничтожается в конце кадра

  39. Что такое SceneManager в Unity?
    A) Инструмент для работы с анимацией
    B) Класс, управляющий загрузкой и выгрузкой сцен
    C) Компонент камеры
    D) Менеджер звука
    Правильный ответ: B) Класс, управляющий загрузкой и выгрузкой сцен

  40. Какой метод позволяет перейти к другой сцене?
    A) SceneManager.LoadScene()
    B) SceneManager.UnloadScene()
    C) SceneManager.GetActiveScene()
    D) SceneManager.MergeScenes()
    Правильный ответ: A) SceneManager.LoadScene()

  41. Что такое PlayerPrefs в Unity?
    A) Класс для управления временем
    B) Система хранения простых данных между сессиями
    C) Класс для работы с графикой
    D) Система управления анимациями
    Правильный ответ: B) Система хранения простых данных между сессиями

  42. Какой тип данных не поддерживается PlayerPrefs?
    A) int
    B) float
    C) bool
    D) string
    Правильный ответ: C) bool

  43. Как сохранить значение 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);

  44. Какой метод вызывается при каждом физическом обновлении?
    A) Update()
    B) LateUpdate()
    C) FixedUpdate()
    D) Start()
    Правильный ответ: C) FixedUpdate()

  45. Какой компонент используется для создания частиц?
    A) ParticleSystem
    B) TrailRenderer
    C) Light
    D) AudioSource
    Правильный ответ: A) ParticleSystem

  46. Что такое Hierarchy в Unity?
    A) Окно для написания кода
    B) Список всех активных объектов на сцене
    C) Список всех файлов проекта
    D) История изменений
    Правильный ответ: B) Список всех активных объектов на сцене

  47. Что означает префикс "On" в методах Unity, таких как OnMouseDown()?
    A) Это внутренние методы ядра Unity
    B) Это события, вызываемые при определённых действиях
    C) Это случайные имена
    D) Это часть API физики
    Правильный ответ: B) Это события, вызываемые при определённых действиях

  48. Какой компонент добавляется автоматически при добавлении 2D спрайта?
    A) Rigidbody2D
    B) SpriteRenderer
    C) Animator
    D) Collider2D
    Правильный ответ: B) SpriteRenderer

  49. Какой вид связи между объектами называется "Parenting"?
    A) Привязка одного объекта к другому через скрипт
    B) Назначение одного объекта родительским по отношению к другому
    C) Подключение аудио к объекту
    D) Привязка материалов к объекту
    Правильный ответ: B) Назначение одного объекта родительским по отношению к другому

  50. Что делает метод Time.timeScale = 0;?
    A) Ускоряет время
    B) Останавливает время (все процессы замедляются)
    C) Сбрасывает таймер
    D) Увеличивает частоту кадров
    Правильный ответ: B) Останавливает время (все процессы замедляются)

  51. Какой компонент отвечает за обработку ввода с клавиатуры или мыши?
    A) InputManager
    B) EventSystem
    C) InputHandler
    D) PlayerInput
    Правильный ответ: A) InputManager

  52. Как получить нажатие кнопки "пробел" в Unity?
    A) Input.GetKeyDown(KeyCode.Space);
    B) Input.GetKey("space");
    C) Input.PressKey("space");
    D) Input.OnKeyPress(KeyCode.Space);
    Правильный ответ: A) Input.GetKeyDown(KeyCode.Space);

  53. Что такое Tag в Unity?
    A) Компонент объекта
    B) Специальная метка для идентификации GameObject
    C) Тип переменной
    D) Метод скрипта
    Правильный ответ: B) Специальная метка для идентификации GameObject

  54. Как найти объект на сцене по тегу?
    A) FindGameObjectWithTag()
    B) FindWithTag()
    C) GetObjectByTag()
    D) SearchByTag()
    Правильный ответ: A) FindGameObjectWithTag()

  55. Что такое Layer в Unity?
    A) Уровень сложности игры
    B) Группировка объектов для фильтрации взаимодействий (например, физических)
    C) Слой анимации
    D) Сцена проекта
    Правильный ответ: B) Группировка объектов для фильтрации взаимодействий (например, физических)

  56. Как изменить слой объекта в инспекторе?
    A) Через выпадающий список Layer
    B) Нажав на кнопку Edit Layers
    C) В настройках Physics Manager
    D) Все варианты верны
    Правильный ответ: D) Все варианты верны

  57. Какой тип света используется для создания направленного освещения, как солнце?
    A) Point Light
    B) Spot Light
    C) Directional Light
    D) Area Light
    Правильный ответ: C) Directional Light

  58. Что такое ScriptableObject в Unity?
    A) Скрипт, который нельзя редактировать
    B) Объект данных, который можно сохранить и использовать вне сцен
    C) Скрипт, автоматически добавляемый к объектам
    D) Класс для управления временем
    Правильный ответ: B) Объект данных, который можно сохранить и использовать вне сцен

  59. Какой компонент позволяет объекту следовать за курсором мыши?
    A) MouseFollower
    B) Transform
    C) Rigidbody
    D) Collider
    Правильный ответ: B) Transform

  60. Что делает метод Invoke()?
    A) Вызывает функцию один раз через указанный интервал времени
    B) Постоянно вызывает функцию
    C) Останавливает выполнение скрипта
    D) Перезапускает игру
    Правильный ответ: A) Вызывает функцию один раз через указанный интервал времени

  61. Как остановить выполнение Invoke()?
    A) StopInvoke()
    B) CancelInvoke()
    C) PauseInvoke()
    D) ClearInvoke()
    Правильный ответ: A) StopInvoke()

  62. Что такое Coroutines в Unity?
    A) Параллельные процессы
    B) Функции, которые могут приостанавливать своё выполнение
    C) Методы для работы с файлами
    D) Система событий
    Правильный ответ: B) Функции, которые могут приостанавливать своё выполнение

  63. Как запустить корутину?
    A) StartCoroutine()
    B) RunCoroutine()
    C) InvokeCoroutine()
    D) ExecuteCoroutine()
    Правильный ответ: A) StartCoroutine()

  64. Какое ключевое слово используется для завершения корутины?
    A) yield return null;
    B) break;
    C) stop;
    D) exit;
    Правильный ответ: A) yield return null;

  65. Что такое Canvas в Unity?
    A) Основной элемент сцены
    B) Контейнер для UI-элементов
    C) Компонент камеры
    D) Слой графики
    Правильный ответ: B) Контейнер для UI-элементов

  66. Какой режим рендеринга Canvas позволяет UI адаптироваться под разные экраны?
    A) Screen Space - Overlay
    B) World Space
    C) Screen Space - Camera
    D) Все вышеперечисленное
    Правильный ответ: A) Screen Space - Overlay

  67. Какой компонент отображает текст в интерфейсе Unity?
    A) TextMeshPro
    B) Text
    C) Label
    D) Все варианты верны
    Правильный ответ: D) Все варианты верны

  68. Что такое RectTransform?
    A) Компонент, управляющий позицией 3D-объекта
    B) Компонент, управляющий расположением UI-элементов на экране
    C) Компонент камеры
    D) Компонент частиц
    Правильный ответ: B) Компонент, управляющий расположением UI-элементов на экране

  69. Какой компонент позволяет игроку перетаскивать UI-элементы?
    A) DragHandler
    B) EventTrigger
    C) ContentSizeFitter
    D) LayoutElement
    Правильный ответ: A) DragHandler

  70. Что такое PlayerPrefs.DeleteAll()?
    A) Удаляет все данные из памяти
    B) Очищает все сохранённые значения PlayerPrefs
    C) Закрывает приложение
    D) Перезагружает сцену
    Правильный ответ: B) Очищает все сохранённые значения PlayerPrefs

  71. Что такое SceneManager.LoadSceneAsync()?
    A) Асинхронная загрузка сцены
    B) Синхронная загрузка сцены
    C) Удаление сцены
    D) Перезапуск текущей сцены
    Правильный ответ: A) Асинхронная загрузка сцены

  72. Какой метод вызывается при активации GameObject?
    A) OnEnable()
    B) OnDisable()
    C) OnDestroy()
    D) OnStart()
    Правильный ответ: A) OnEnable()

  73. Что такое Asset Store в Unity?
    A) Магазин готовых проектов, моделей, скриптов и других ресурсов
    B) Инструмент для написания кода
    C) Редактор анимаций
    D) Система сборки проекта
    Правильный ответ: A) Магазин готовых проектов, моделей, скриптов и других ресурсов

  74. Какой тип файла хранит параметры анимации?
    A) .anim
    B) .fbx
    C) .prefab
    D) .mat
    Правильный ответ: A) .anim

  75. Какой компонент управляет воспроизведением анимации через Animator Controller?
    A) Animation
    B) Animator
    C) AnimatorController
    D) AnimatorOverrideController
    Правильный ответ: B) Animator

  76. Что такое Animator Controller?
    A) Скрипт для управления движком
    B) Файл, определяющий логику переходов между анимациями
    C) Компонент камеры
    D) Система физики
    Правильный ответ: B) Файл, определяющий логику переходов между анимациями

Экзаменационный билет №1

Теоретическая часть

  1. Что такое GameObject и какие основные компоненты обычно к нему добавляются в Unity?
  2. Охарактеризуйте методы жизненного цикла скрипта в Unity: Awake, Start, Update.
 

Ответы на теоретическую часть:

  1. GameObject — это базовый элемент сцены в Unity, представляющий любой объект. Обычно к нему добавляют такие компоненты, как Transform (отвечает за позицию, поворот и масштаб), Rigidbody (физическое поведение), Collider (обнаружение столкновений), SpriteRenderer или MeshRenderer (визуальное отображение) и другие.
  2. 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

Теоретическая часть

  1. Что такое Rigidbody и как он взаимодействует с физической системой движка?
  2. Какие типы коллайдеров вы знаете и в чём разница между Collider и Trigger?
 

Ответы на теоретическую часть:

  1. Rigidbody — это компонент, который добавляет объекту физические свойства, такие как гравитация, масса, скорость. Он позволяет объекту взаимодействовать с другими физическими объектами, реагировать на силы и столкновения.
  2. В 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

Теоретическая часть

  1. Что такое анимационный контроллер (Animator Controller) и как он взаимодействует с компонентом Animator?
  2. Как работают условия перехода между анимациями в Unity?
 

Ответы на теоретическую часть:

  1. Animator Controller — это файл, определяющий логику переключения между анимациями. Он подключается к объекту через компонент Animator и управляет воспроизведением анимаций в зависимости от заданных условий.
  2. Условия перехода задаются через параметры (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

Теоретическая часть

  1. Что такое UI в Unity и какие основные элементы интерфейса вы знаете?
  2. Как работает система событий в Unity UI?
 

Ответы на теоретическую часть:

  1. UI — это пользовательский интерфейс. Основные элементы: Canvas (контейнер для UI), Text, Image, Button, Slider, Toggle. Они позволяют создать меню, HUD, инвентарь и другие элементы интерфейса игрока.
  2. События 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

Теоретическая часть

  1. Что такое PlayerPrefs и какие основные методы он предоставляет?
  2. Что такое корутины и зачем они нужны в Unity?
 

Ответы на теоретическую часть:

  1. PlayerPrefs — это простая система сохранения данных между запусками игры. Методы: SetInt(), SetFloat(), SetString(), GetInt(), GetFloat(), GetString(), DeleteAll(), Save().
  2. Корутины — это функции, которые могут останавливаться и возобновляться. Они используются для задержек без блокировки потока. Пример: 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

Теоретическая часть

  1. Что такое SceneManager и как он используется для переключения между сценами?
  2. В чём разница между SceneManager.LoadScene() и SceneManager.LoadSceneAsync()? Приведите пример использования.
 

Ответы на теоретическую часть:

  1. SceneManager — это класс Unity, управляющий загрузкой, выгрузкой и переключением между сценами. Используется через методы LoadScene(), UnloadSceneAsync(), GetActiveScene() и др.
  2. LoadScene() загружает сцену синхронно, останавливая выполнение других действий. LoadSceneAsync() загружает сцену асинхронно, что позволяет отображать прогрессбар или продолжать выполнение кода.
 

Практическая часть

Напишите скрипт, который при нажатии клавиши "N" загружает следующую сцену по имени "Level2".

using UnityEngine;
using UnityEngine.SceneManagement;

public class LoadNextScene : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.N))
        {
            SceneManager.LoadScene("Level2");
        }
    }
}

Экзаменационный билет №7

Теоретическая часть

  1. Что такое Transform и какие основные свойства он предоставляет?
  2. Как работает Time.deltaTime и зачем он нужен?
 

Ответы на теоретическую часть:

  1. Transform — это компонент, отвечающий за позицию, поворот и масштаб объекта. Основные свойства: position, rotation, localScale.
  2. Time.deltaTime — время, прошедшее с последнего кадра. Используется для сглаживания движений и действий, чтобы они не зависели от частоты кадров.
 

Практическая часть

Создайте скрипт, который вращает объект вокруг своей оси с заданной скоростью.

using UnityEngine;

public class RotateObject : MonoBehaviour
{
    public float rotationSpeed = 90f;

    void Update()
    {
        transform.Rotate(Vector3.up, rotationSpeed * Time.deltaTime);
    }
}

Экзаменационный билет №8

Теоретическая часть

  1. Что такое Prefab и как его использовать в проекте?
  2. Чем отличается Instantiate от простого создания GameObject на сцене?
 

Ответы на теоретическую часть:

  1. Prefab — это шаблон объекта, который можно многократно использовать. Создаётся перетаскиванием GameObject из Hierarchy в Project. Используется через Instantiate().
  2. 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

Теоретическая часть

  1. Что такое ScriptableObject и в чём его преимущество перед обычными классами данных?
  2. Что такое Singleton и как его реализовать в Unity?
 

Ответы на теоретическую часть:

  1. ScriptableObject — это отдельный файл данных, который можно сохранить и использовать вне сцен. Позволяет хранить информацию (например, статы персонажей) и делиться ею между несколькими объектами.
  2. 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

Теоретическая часть

  1. Что такое корутины и как они помогают в управлении временными задержками?
  2. Что такое Canvas и какие режимы рендеринга он поддерживает?
 

Ответы на теоретическую часть:

  1. Корутины — это функции, которые могут приостанавливать своё выполнение. Запускаются через StartCoroutine(), останавливаются через StopCoroutine(). Используют yield return для задержек.
  2. 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

Теоретическая часть

  1. Что такое Tag и Layer? В чём их назначение и как они используются в Unity?
  2. Как работает метод GetComponent<T>() и где он может применяться?
 

Ответы на теоретическую часть:

  1. Tag — это метка объекта, используемая для идентификации (например, "Player", "Enemy"). Layer — группа объектов, используется для фильтрации взаимодействий (например, игнорировать столкновения между слоями).
  2. 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

Теоретическая часть

  1. Что такое Time.timeScale и какие сценарии его использования вы можете привести?
  2. Что такое EventTrigger и как им пользоваться в UI?
 

Ответы на теоретическую часть:

  1. Time.timeScale управляет скоростью времени в игре. Значение 0 останавливает все процессы, связанные с временем. Часто используется для паузы, замедления игры.
  2. EventTrigger — компонент, позволяющий обрабатывать сложные события пользовательского ввода (например, наведение мыши, клик, пролистывание колеса).
 

Практическая часть

Напишите скрипт, который при наведении курсора на UI-элемент выводит сообщение в консоль.

using UnityEngine;
using UnityEngine.EventSystems;

public class HoverDetector : MonoBehaviour, IPointerEnterHandler
{
    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Курсор наведён на элемент: " + name);
    }
}

Экзаменационный билет №13

Теоретическая часть

  1. Что такое Resources.Load и как он используется для загрузки ресурсов?
  2. Что такое PlayerPrefs.DeleteAll() и в каких случаях он применяется?
 

Ответы на теоретическую часть:

  1. Resources.Load — метод загрузки ресурсов во время выполнения из папки Resources. Пример: var prefab = Resources.Load<GameObject>("MyPrefab");
  2. 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

Теоретическая часть

  1. Что такое Addressables и чем они отличаются от Resources?
  2. Что такое Cinemachine и зачем он используется?
 

Ответы на теоретическую часть:

  1. Addressables — это система загрузки и управления ресурсами, которая позволяет грузить их по запросу, в том числе с удалённых серверов. В отличие от Resources, они не загружаются автоматически и поддерживают гибкое управление памятью.
  2. 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

Теоретическая часть

  1. Что такое Sprite Atlas и как он помогает в оптимизации графики в 2D-играх?
  2. Что такое Sorting Layer и Order in Layer в 2D-проектах?
 

Ответы на теоретическую часть:

  1. Sprite Atlas — это текстура, объединяющая несколько спрайтов в одну. Уменьшает количество draw call'ов и ускоряет отрисовку.
  2. 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
    • Компоненты: SpriteRendererRigidbody2DBoxCollider2D
    • Скрипт 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;
    }
}

Обучающие моменты

Что изучают студенты
Примечание
Работа с Input System
Настройка осей, проверка ввода
Отладка через Debug.Log
Поиск причин некорректной работы
Взаимодействие с Rigidbody2D
Понимание ограничений и поведения физики
Обработка столкновений
Правильное использование On/Exit/Stay
Проектирование игровой логики
Разделение ответственности между методами

Дополнительные задания для самостоятельной работы

  1. Реализуйте анимацию прыжка и бега через Animator.
  2. Добавьте систему здоровья и взаимодействие с врагами.
  3. Сделайте так, чтобы игрок мог прыгнуть только дважды (double jump).
  4. Добавьте UI-индикатор, показывающий, находится ли персонаж на земле.

(2) Кейс: "Персонаж проваливается сквозь платформы — почему не работает гравитация и столкновения?"


Описание ситуации

Вы работаете над 2D-платформером. У вас есть персонаж с Rigidbody2D и BoxCollider2D, а также несколько платформ с BoxCollider2D.
При запуске игры персонаж начинает падать, но не останавливается на платформах, а проваливается сквозь них .

 

Исходные данные

  • Персонаж:
    • Компоненты: SpriteRendererRigidbody2DBoxCollider2D
    • Скрипт PlayerController (простое управление)
  • Платформа:
    • Компоненты: SpriteRendererBoxCollider2D
  • Нет ошибок в консоли
  • Персонаж падает, но не останавливается
 

Исходный скрипт 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 для обоих объектов.

 

Итоговое решение: исправленный скрипт и рекомендации по настройке

Изменения в инспекторе

  1. У игрока:
    • Rigidbody2DgravityScale = 1isKinematic = false
    • BoxCollider2DisTrigger = false
  2. У платформ:
    • Удалить Rigidbody2Dоставить только BoxCollider2D
    • isTrigger = false
 

Дополнительно в скрипте (по желанию)

private void OnCollisionEnter2D(Collision2D collision)
{
    Debug.Log("Столкновение с " + collision.gameObject.name);
}

Обучающие моменты

Что изучают студенты
Примечание
Работа с физикой в Unity
Как работают Rigidbody и Collider
Настройка коллайдеров
Важность правильного положения и размеров
Отладка через Debug.Log
Как проверять столкновения и параметры
Разница между isTrigger и обычным коллайдером
Когда использовать и как влияет на поведение
Взаимодействие между объектами
Почему одни объекты проходят сквозь другие

Дополнительные задания для самостоятельной работы

  1. Реализуйте систему приземления, которая активирует анимацию или звук при касании земли.
  2. Добавьте движущуюся платформу, на которую игрок может прыгнуть.
  3. Создайте триггер, который активирует переход на следующий уровень при касании определённого объекта.
  4. Проверьте, чтобы игрок мог прыгнуть только тогда, когда находится на земле.

Ролевая игра №1: "Стартап-студия Unity"


Цель игры

Познакомить студентов с ключевыми этапами создания простого 2D-проекта в Unity, от идеи до первых рабочих механик.
Имитировать командную разработку, развить навыки коммуникации, распределения задач и решения технических проблем.

 

Формат

  • Тип: Образовательная ролевая игра (настольная/виртуальная)
  • Участники: 4–6 человек
  • Продолжительность: 3–4 академических часа
  • Материалы: доска, стикеры, карточки ролей, описание задания, шаблон проекта Unity
 

Сеттинг

Вы — молодая студия по разработке игр. Компания только начинает свою деятельность. Клиент заказал прототип 2D-платформера, который должен быть готов через несколько дней. У вас ограниченные ресурсы, но есть доступ к движку Unity и базовым инструментам.

 

Роли в команде

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

 
Роль
Описание
Геймдизайнер
Придумывает концепцию игры, описывает механики, пишет ТЗ для команды
Программист
Пишет скрипты для управления персонажем, прыжков, взаимодействий
Художник
Подбирает или создаёт спрайты, анимации, оформление интерфейса
Тестировщик
Проверяет функционал на наличие багов, составляет отчеты
Менеджер проекта
Следит за сроками, организует встречи, координирует работу команды
UI/UX-дизайнер(по желанию)
Создаёт интерфейс меню, HUD, экран проигрыша и победы

Этапы игры

Этап 1: Брифинг
  • Все участники получают роли.
  • Геймдизайнер представляет концепцию игры (например, «бегунок с прыжками и монетками»).
  • Менеджер проекта делает таймлайн из 3 фаз:
    • Фаза 1: Игровой мир и управление
    • Фаза 2: Добавление игровых объектов (монетки, враги)
    • Фаза 3: Интерфейс и завершение проекта
 
Этап 2: Разработка
  • Каждые 15 минут — короткая встреча (stand-up), где каждый участник отчитывается:
    • Что сделал?
    • Над чем работает?
    • Есть ли блокеры?
 
Этап 3: Презентация
  • Команда представляет свой прототип.
  • Тестировщик демонстрирует найденные ошибки.
  • Геймдизайнер оценивает соответствие ТЗ.
  • Менеджер подводит итоги.
 

Обучающие эффекты

  • Знакомство с жизненным циклом разработки игры
  • Понимание роли каждого участника в процессе
  • Опыт работы в команде и общения между специалистами
  • Отладка и тестирование в реальном времени
  • Первичное освоение Unity: создание сцен, добавление компонентов, написание скриптов
 

Возможные проблемы и вызовы во время игры

Проблема
Возможная причина
Как решить
Не работает управление персонажем
Ошибка в коде, неверно прикреплен скрипт
Проверить Rigidbody2D, Collider, значения Input.GetAxis
Персонаж проваливается сквозь платформу
Коллайдеры не установлены или isTrigger активирован
Убедиться, что у обоих объектов есть коллайдеры и isTrigger = false
Не загружается следующая сцена
SceneManager.LoadScene() не вызван или имя сцены неверно
Проверить правильность имени сцены и её наличие в Build Settings
UI-кнопка не реагирует
EventSystem отсутствует или кнопка неактивна
Добавить EventSystem, проверить OnClick в инспекторе
Команда не уложилась в срок
Плохое планирование задач
Вести список задач, использовать таймер, регулярно встречаться

Дополнительно

  • Можно использовать заранее подготовленный шаблон Unity-проекта с пустыми скриптами и ресурсами.
  • По окончании игры можно провести обсуждение: что сработало, что можно улучшить, как лучше распределить роли.

 

Ролевая игра №2: "Эвакуация с планеты — Спасательная миссия"


Цель игры

Научить студентов работать с асинхронной загрузкой сцен, системой сохранений (PlayerPrefs), UI-интерфейсом и базовой логикой игровых состояний (например, победа/проигрыш).
Также развить навыки работы в условиях ограниченного времени и неопределенности.

 

Формат

  • Тип: Образовательная ролевая игра
  • Участники: 4–6 человек
  • Продолжительность: 3–4 академических часа
  • Материалы: доска, карточки задач, описание ролей, Unity-проект с шаблоном
 

Сеттинг

Действие происходит на отдалённой космической станции. Нестабильная звезда вот-вот взорвётся, и экипаж должен успеть эвакуироваться. Игроки — члены команды, которым нужно подготовить корабль к старту, собрав ресурсы, активировав системы и защитив станцию от внешних угроз.

 

Роли в команде

Роль
Описание
Геймдизайнер
Формулирует игровую механику, пишет ТЗ по функционалу
Программист основной логики
Реализует управление персонажем, сбор предметов, взаимодействие с объектами
Программист интерфейса и состояний
Отвечает за UI: инвентарь, таймер, экраны победы и проигрыша
Специалист по сохранениям и прогрессу
Настройка PlayerPrefs для хранения данных между сценами
Менеджер проекта
Контролирует сроки, распределяет задачи, проводит встречи
Тестировщик
Ищет баги, проверяет выполнение требований

Этапы игры

Этап 1: Брифинг
  • Геймдизайнер представляет концепцию: «Игрок должен собрать 5 элементов энергии, чтобы запустить корабль, пока не истёк таймер».
  • Менеджер составляет план:
    • Фаза 1: Загрузка уровня, создание интерфейса
    • Фаза 2: Логика сбора предметов и таймера
    • Фаза 3: Система сохранений и переход между уровнями
 
Этап 2: Разработка
  • Команда делит задачи:
    • Программист создаёт скрипты для взаимодействия с объектами
    • Дизайнер добавляет UI: текст таймера, инвентарь, кнопки
    • Специалист по сохранениям реализует сохранение количества собранных предметов
  • Каждые 10–15 минут — короткая встреча для отчёта и обсуждения проблем
 
Этап 3: Презентация
  • Команда демонстрирует прототип:
    • Работает ли таймер?
    • Сохраняется ли прогресс?
    • Переходит ли игрок на следующий уровень при успехе?
  • Тестировщик показывает найденные баги
  • Геймдизайнер оценивает соответствие заданию
 

Обучающие эффекты

  • Практика работы с UI : текст, кнопки, Canvas
  • Изучение SceneManager.LoadScene() и SceneManager.LoadSceneAsync()
  • Использование PlayerPrefs для сохранения прогресса
  • Реализация игровых состояний: победа / проигрыш
  • Работа в условиях ограниченного времени и совместной разработки
 

Возможные проблемы и вызовы во время игры

Проблема
Возможная причина
Как решить
Не сохраняются данные между сценами
Забыли использовать PlayerPrefs.Save() или неверно читаются значения
Убедиться, что Save вызывается после изменения данных
Таймер не работает
Ошибка в Update(), Time.deltaTime не учтён
Перепроверить формулу подсчёта времени
Кнопка не реагирует
Нет EventSystem или не подключен метод OnClick
Добавить EventSystem, проверить связь скрипта и кнопки
Сцена не загружается
SceneManager.LoadScene("name") вызван с ошибкой имени
Проверить Build Settings и имя сцены
Элементы интерфейса исчезают при переходе
Canvas не помечен DontDestroyOnLoad
Добавить код или отметить родителя как постоянный

Дополнительно

  • Можно использовать шаблон Unity-проекта с двумя сценами: MainLevel и EndScreen
  • Предложить командам реализовать дополнительные фичи: музыку, звуки, простую анимацию

 

Ролевая игра №3: "Экспедиция на заброшенную базу — исследование и выживание"


Цель игры

Научить студентов работать с системой анимаций (Animator), триггерами, взаимодействием с объектами в 2D-среде, а также освоить работу с Particle System и простыми механиками инвентаря.
Имитировать процесс реализации игровых механик в условиях ограниченных ресурсов и необходимости быстрого принятия решений.

 

Формат

  • Тип: Образовательная ролевая игра
  • Участники: 4–6 человек
  • Продолжительность: 3–4 академических часа
  • Материалы: карточки задач, описание ролей, Unity-проект с минимальным шаблоном
 

Сеттинг

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

 

Роли в команде

Роль
Описание
Геймдизайнер
Формулирует концепцию игры, пишет ТЗ, задаёт ключевые механики
Программист логики персонажа
Реализует управление, анимацию, взаимодействие с объектами
Программист систем и ловушек
Создаёт ловушки, двери, сигнализации, события при взаимодействии
Художник / Аниматор
Подготавливает спрайты, анимации персонажа и ловушек
UI/UX дизайнер
Отвечает за интерфейс: инвентарь, текстовые подсказки, экран победы
Менеджер проекта
Следит за сроками, распределяет задачи, организует встречи

Этапы игры

Этап 1: Брифинг
  • Геймдизайнер представляет концепцию:
    • Игрок должен собрать 3 элемента, чтобы открыть дверь к дневнику.
    • Ловушки активируются при неправильном взаимодействии.
    • Время ограничено — если не успеешь, запускается режим "Паника".
  • Менеджер составляет этапы:
    • Фаза 1: Персонаж, его анимация и движение
    • Фаза 2: Двери, ловушки, дневник
    • Фаза 3: Интерфейс, завершение проекта
 
Этап 2: Разработка
  • Команда делит задачи:
    • Программист реализует управление и анимации (бег, стойка, приседание)
    • Художник добавляет анимации через Animator Controller
    • UI-дизайнер создаёт инвентарь и таймер
    • Специалист по ловушкам настраивает триггеры и реакции
  • Каждые 10–15 минут — короткая встреча для отчёта и обсуждения проблем
 
Этап 3: Презентация
  • Команда демонстрирует прототип:
    • Работают ли анимации?
    • Можно ли собрать все предметы?
    • Срабатывают ли ловушки?
  • Тестировщик показывает найденные баги
  • Геймдизайнер оценивает соответствие заданию
 

Обучающие эффекты

  • Изучение работы с Animator , параметрами и переходами между анимациями
  • Настройка триггеров и коллайдеров для взаимодействия с объектами
  • Использование Particle System для создания эффектов (например, взрыв ловушки)
  • Практика работы с инвентарём и отображением предметов в UI
  • Работа в условиях ограниченного времени и совместной разработки
 

Возможные проблемы и вызовы во время игры

Проблема
Возможная причина
Как решить
Не меняется анимация персонажа
Неверно настроены параметры или переходы в Animator
Проверить условия перехода и значения параметров
Дверь не открывается при сборе всех предметов
Логика проверки условий не реализована правильно
Убедиться, что количество собранного сравнивается с нужным числом
Ловушка срабатывает слишком часто
Trigger работает некорректно
Проверить isTrigger и методы OnEnter/OnExit
Элементы UI не обновляются
Нет связи между скриптом и текстовым полем
Проверить ссылки в инспекторе
Игра не реагирует на нажатия
Нет EventSystem или Canvas не активен
Добавить EventSystem, проверить Canvas Render Mode

Дополнительно

  • Можно использовать шаблон Unity-проекта с двумя комнатами, дверью и несколькими предметами
  • Предложить командам реализовать дополнительные фичи: голосовое сопровождение, простую систему здоровья

 

Ролевая игра №4: "Квест в подземелье — сбор артефактов и побег"


Цель игры

Научить студентов работать с системой взаимодействия между объектами, триггерами, инвентарём, UI-элементами и базовой логикой головоломок.
Имитировать командную разработку с ограниченным временем на реализацию нескольких игровых механик.

 

Формат

  • Тип: Образовательная ролевая игра
  • Участники: 4–6 человек
  • Продолжительность: 3–4 академических часа
  • Материалы: карточки задач, описание ролей, Unity-проект с шаблоном
 

Сеттинг

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

 

Роли в команде

Роль
Описание
Геймдизайнер
Формулирует концепцию, пишет ТЗ по функционалу
Программист основной логики
Реализует управление персонажем, сбор предметов, взаимодействие с объектами
Программист головоломки и ловушек
Создаёт логику головоломки (например, нажатие кнопок), активацию ловушек
UI/UX дизайнер
Отвечает за интерфейс: инвентарь, текстовые подсказки, экран победы
Художник / Спец по анимации
Подготавливает спрайты, анимации персонажа и ловушек
Менеджер проекта
Контролирует сроки, распределяет задачи, проводит встречи

Этапы игры

Этап 1: Брифинг
  • Геймдизайнер представляет концепцию:
    • Игрок должен собрать 3 артефакта.
    • Активировать их в определённом порядке у алтаря.
    • Избегать ловушек и выйти до истечения времени.
  • Менеджер составляет этапы:
    • Фаза 1: Персонаж, его управление и движение
    • Фаза 2: Артефакты, головоломка, дверь
    • Фаза 3: Интерфейс, завершение проекта
 
Этап 2: Разработка
  • Команда делит задачи:
    • Программист создаёт скрипты для взаимодействия с объектами
    • Дизайнер добавляет UI: инвентарь, таймер, экраны победы и проигрыша
    • Художник создаёт анимации ловушек
    • Программист головоломки реализует логику активации артефактов
  • Каждые 10–15 минут — короткая встреча для отчёта и обсуждения проблем
 
Этап 3: Презентация
  • Команда демонстрирует прототип:
    • Работает ли сбор предметов?
    • Срабатывает ли головоломка при правильном порядке?
    • Появляется ли экран победы?
  • Тестировщик показывает найденные баги
  • Геймдизайнер оценивает соответствие заданию
 

Обучающие эффекты

  • Практика работы с интерфейсом и отображением данных (инвентарь, таймер)
  • Использование Animator для анимаций персонажа и ловушек
  • Настройка триггеров и коллайдеров для взаимодействия с объектами
  • Реализация головоломок и логических условий
  • Работа в условиях ограниченного времени и совместной разработки
 

Возможные проблемы и вызовы во время игры

Проблема
Возможная причина
Как решить
Не меняется анимация персонажа
Неверно настроены параметры или переходы в Animator
Проверить условия перехода и значения параметров
Артефакт не добавляется в инвентарь
Нет связи между скриптом и UI-текстом
Проверить ссылки в инспекторе
Ловушка срабатывает слишком часто
Trigger работает некорректно
Проверить isTrigger и методы OnEnter/OnExit
Головоломка не срабатывает
Условия проверки неверны
Убедиться, что порядок активации соответствует заданному
Экран победы не появляется
Логика завершения уровня не реализована
Проверить условия окончания игры

Дополнительно

  • Можно использовать шаблон 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: создание первой игры с нуля
    Изучите интерфейс Unity, работу с объектами и напишите свой первый скрипт.

  2. Unity Junior Developer: от обучения к портфолио
    Освойте базовые инструменты разработки игр и создайте 3 проекта для портфолио.

  3. Разработка 2D-игр на Unity: практика для новичков
    Научитесь создавать платформеры, головоломки и мини-аркады в двухмерном пространстве.

  4. Unity за 80 часов: стартовая подготовка разработчика игр
    Быстрое погружение в движок Unity и язык C# с финальным практическим проектом.

  5. Создание игр на Unity: базовый уровень для начинающих
    Курс для тех, кто хочет научиться работать с Unity без предварительного опыта.

  6. Unity Junior Lab: мини-проекты для начинающих разработчиков
    Практический подход к обучению через реализацию коротких игровых проектов.

  7. Программирование на C# в Unity: от переменной до механики
    Изучите основы языка C# и его применение в игровой логике.

  8. Unity для школьников: первые шаги в геймдеве
    Образовательный курс по созданию игр для подростков 12–17 лет.

  9. Unity-разработчик с нуля: теория + практика
    Структурированный курс по освоению Unity с акцентом на практические навыки.

  10. Unity Junior School: путь к первой работе в игровой индустрии
    Подготовка к роли Junior Unity Developer с реальными задачами и проектами.

  11. Геймдев для новичков: как создать игру в Unity
    Краткий курс по основам создания игр — от идеи до первого билда.

  12. Unity Game Dev Starter Pack: начни разрабатывать игры уже сегодня
    Минимальный набор знаний и инструментов для запуска собственного игрового проекта.

  13. Unity и C#: комплексное обучение для будущих разработчиков
    Одновременное изучение движка Unity и языка программирования C#.

  14. Unity Junior Bootcamp: базовый уровень за 2 месяца
    Интенсивное обучение с фокусом на получении практических навыков.

  15. Unity-разработка: создание 2D и 3D игр с нуля
    Освойте основы работы с двумя популярными форматами игровых проектов.

  16. Игровая физика и анимация в Unity
    Изучите движение, прыжки, столкновения и анимационные системы.

  17. Пользовательский интерфейс в Unity: от кнопки до меню
    Научитесь создавать UI/UX для игр: текст, кнопки, инвентарь, здоровье.

  18. Создание уровней в Unity: Tilemap, триггеры, камеры
    Работа с инструментами уровня, дизайн игрового пространства.

  19. Тестирование и отладка в Unity: основы QA для разработчика
    Поиск багов, работа с консолью, проверка стабильности проекта.

  20. Git и командная работа в Unity: версионный контроль
    Использование Git и GitHub для совместной разработки проектов.

  21. Создание мобильных игр на Unity
    Подготовка и сборка проектов под Android и iOS.

  22. Unity и звуки: работа с аудио в игровом проекте
    Добавление музыки, звуковых эффектов и реакции на события.

  23. Unity Junior Project: разработка полноценной мини-игры
    Завершение самостоятельного проекта от идеи до готовой сборки.

  24. Как устроиться Junior Unity-разработчиком: карьерный курс
    Подготовка резюме, портфолио, прохождение собеседования.

  25. Unity Challenge: решаем реальные задачи разработчика
    Курс в формате задач и кейсов, имитирующий рабочие ситуации.

Заявка ученика, студента, слушателя
Заявка преподавателя, репетитора админу сети.
13:51
12
Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.