Траектория «Геймдев» · линия A · конспект 9 из 13

Триггеры и сборка проекта

О чём эта тема
Невидимые объекты-датчики: финишная зона, реагирующая на шар, — и превращение проекта в самостоятельное приложение: модули платформ и сборка под ПК.
Аннотация
Конспект начинается с понятия триггера: невидимый объект с коллайдером в режиме Is Trigger, взаимодействие с которым вызывает действия в коде. Строится финишная зона уровня: куб с отключённым Mesh Renderer, отметка невидимого объекта иконкой, поздравительная надпись и скрипт NextLevel с методами OnTriggerEnter/Stay/Exit и отложенным вызовом Invoke. Поведение трёх методов закрепляется интерактивной моделью зоны-триггера. Вторая часть — сборка: установка модулей поддержки платформ через Unity Hub и сборка проекта под ПК в Build Settings.
Пререквизиты
A05 — коллайдеры и флажок Is Trigger; A07 — жизненный цикл и методы OnTrigger*; A08 — холст, Text (TMP), Build Settings.
Мотивация
В игре из A08 шар уже катается по уровню, но уровень никак не заканчивается: нет ни финиша, ни победы. Финиш — это по сути вопрос «как узнать из кода, что объект оказался в нужном месте?». Ответ Unity — триггеры; а чтобы показать готовую игру не из редактора, проект нужно собрать в самостоятельное приложение — этим конспект и закончится, закрыв модуль «Код и первая сборка».

1. Что такое триггер

Триггер в понимании Unity — объект, который при определённом взаимодействии с ним вызывает определённые действия. Мы сделаем площадку, при остановке на которой будет «запускаться следующий уровень». Сначала немного переделаем уровень: добавим проход в стене и источник света Point Light у финиша.

Теперь сам финиш: на его месте создаём куб, отключаем у него компонент Mesh Renderer (куб перестаёт отображаться) и в компоненте Box Collider ставим галочку Is Trigger. Проверим, что коллайдер есть и на шаре — кстати, вместо Sphere Collider можно поэкспериментировать с Box или Capsule Collider и посмотреть, что изменится. Итог: невидимый объект, с которым можно взаимодействовать из скриптов.

Сцена с зелёной рамкой невидимого куба у финиша; в инспекторе отмечены галочка Is Trigger у Box Collider и снятая галочка Mesh Renderer
Финишная зона: Mesh Renderer выключен, Is Trigger включён

Невидимые объекты легко потерять в сцене, поэтому их отмечают иконкой: выбираем объект, в инспекторе слева от имени щёлкаем по иконке куба и выбираем цвет и форму метки. Отображение иконок настраивается кнопкой Gizmos над сценой: при включённых 3D Icons их размер регулируется ползунком и зависит от расстояния до объекта.

Уровень сверху: над невидимой финишной зоной висит красная метка Finish
Помеченный триггер всегда виден в сцене

2. Скрипт для триггера

Поздравим игрока с прохождением уровня. На холсте создаём Text — TextMeshPro, позиционируем надпись по центру — и пишем скрипт, который срабатывает, когда шар закатывается в финишный куб:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NextLevel : MonoBehaviour
{
    [SerializeField] private GameObject congrats;  // надпись с поздравлением

    void Start()
    {
        Congrats(false);                // при старте поздравление скрыто
    }

    void OnTriggerStay()
    {
        Congrats(true);                 // шар в зоне — показать надпись
        Invoke("NextLvl", 3f);          // через 3 секунды — следующий уровень
    }

    void NextLvl()
    {
        print("NextLevel");            // уровня пока нет — проверяем сообщением
    }

    void Congrats(bool state)
    {
        congrats.SetActive(state);      // включает и выключает надпись
    }
}

Разбор нового:

Типичная ошибка Забыть, что OnTriggerStay вызывается каждый кадр, пока объект в зоне: за 3 секунды ожидания Invoke будет поставлен в очередь десятки раз, и «NextLevel» напечатается многократно. Для одноразового события надёжнее OnTriggerEnter либо логический флаг «уже сработало». Проверьте это поведение на модели ниже.
Тренажёр · зона-триггер

Двигайте шар ползунком. Пунктирная зона — невидимый финишный куб с Is Trigger. В журнале — события, которые Unity вызвала бы у скрипта на этой зоне: вход, пребывание (каждый «кадр» модели), выход. Заведите шар в зону и посмотрите, сколько раз успевает сработать OnTriggerStay.

Is Trigger
Поздравляем! Уровень пройден

3. Сборка проекта

3.1. Модули платформ

Чтобы собрать проект под платформу, отличную от рабочей, нужен модуль поддержки. Два пути к установке. Через Unity Hub: вкладка Installs → значок шестерёнки у вашей версии Unity → Add modules → отметить нужный модуль (например, WebGL Build Support) → Continue. Или из самого Unity: File → Build Settings → выбрать платформу в списке → кнопка Install with Unity Hub — она откроет Unity Hub с уже отмеченным модулем.

3.2. Сборка под ПК

File → Build Settings. Проверяем список Scenes In Build (сцены в хронологическом порядке — мы сделали это в A08), выбираем платформу Windows, Mac, Linux, целевую платформу (Target Platform: Windows) и архитектуру (Intel 64-bit).

Окно Build Settings: сцены Menu и Level_1 в списке сборки, платформа Windows Mac Linux, целевая платформа Windows, архитектура Intel 64-bit, кнопки Build и Build And Run
Build Settings перед сборкой под ПК

Остаётся нажать Build (собрать) или Build And Run (собрать и сразу запустить), выбрать папку и дождаться окончания сборки. Готовый проект запускается как любое самостоятельное приложение — его уже можно показать на защите или отдать друзьям на тестирование.

Типичная ошибка Собирать проект в папку с исходниками (Assets). Для сборки заводится отдельная папка вне проекта — иначе Unity начнёт импортировать собственную сборку как ресурсы, и проект замусорится.

Для самостоятельной работы по материалам модуля есть курс на Stepik (см. «Источники»): задания повторяют путь от пустой сцены до собранного проекта.

Контрольные вопросы

Источники

  1. Collider.OnTriggerStay // Unity Scripting API : [сайт]. — URL: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerStay.html (дата обращения: 08.07.2026).
  2. Publishing Builds // Unity Documentation : [сайт]. — URL: https://docs.unity3d.com/Manual/PublishingBuilds.html (дата обращения: 08.07.2026).
  3. Основы Unity : курс для самостоятельной работы // Stepik : [сайт]. — URL: https://stepik.org/course/213472/syllabus (дата обращения: 08.07.2026).