Триггеры и сборка проекта
- О чём эта тема
- Невидимые объекты-датчики: финишная зона, реагирующая на шар, — и превращение проекта в самостоятельное приложение: модули платформ и сборка под ПК.
- Аннотация
- Конспект начинается с понятия триггера: невидимый объект с коллайдером в режиме 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 и посмотреть, что изменится. Итог: невидимый объект, с которым можно взаимодействовать из скриптов.
Невидимые объекты легко потерять в сцене, поэтому их отмечают иконкой: выбираем объект, в инспекторе слева от имени щёлкаем по иконке куба и выбираем цвет и форму метки. Отображение иконок настраивается кнопкой Gizmos над сценой: при включённых 3D Icons их размер регулируется ползунком и зависит от расстояния до объекта.
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); // включает и выключает надпись } }
Разбор нового:
- [SerializeField] GameObject congrats — в это поле в инспекторе перетаскивается объект надписи; SetActive(true/false) включает и выключает его (вспомните пары OnEnable/OnDisable из A07).
- OnTriggerStay() — базовый метод: срабатывает, пока объект с коллайдером находится внутри коллайдера-триггера. Рядом ещё два базовых метода: OnTriggerEnter() — объект вошёл в зону, OnTriggerExit() — вышел из неё.
- Invoke("NextLvl", 3f) — отложенный вызов: первым аргументом — строка с именем метода, вторым — задержка в секундах.
- print(...) — краткая запись Debug.Log для наследников MonoBehaviour.
Двигайте шар ползунком. Пунктирная зона — невидимый финишный куб с Is Trigger. В журнале — события, которые Unity вызвала бы у скрипта на этой зоне: вход, пребывание (каждый «кадр» модели), выход. Заведите шар в зону и посмотрите, сколько раз успевает сработать OnTriggerStay.
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 (собрать) или Build And Run (собрать и сразу запустить), выбрать папку и дождаться окончания сборки. Готовый проект запускается как любое самостоятельное приложение — его уже можно показать на защите или отдать друзьям на тестирование.
Для самостоятельной работы по материалам модуля есть курс на Stepik (см. «Источники»): задания повторяют путь от пустой сцены до собранного проекта.
Контрольные вопросы
-
Отключить компонент Mesh Renderer (куб перестаёт отрисовываться) и включить флажок Is Trigger у его коллайдера — коллайдер перестаёт физически останавливать объекты, но сообщает о пересечениях в код.
-
Enter срабатывает один раз при входе объекта в коллайдер-триггер; Stay — каждый кадр, пока объект внутри; Exit — один раз при выходе. У всех есть 2D-версии.
-
OnTriggerStay вызывается каждый кадр, пока объект в зоне, — и каждый вызов ставит Invoke в очередь заново. Для одноразового события используют OnTriggerEnter или логический флаг «уже сработало».
-
Откладывает вызов метода: первым аргументом передаётся строка с именем метода, вторым — задержка в секундах. Через 3 секунды Unity вызовет NextLvl().
-
Выбрать объект, в инспекторе щёлкнуть по иконке куба слева от имени и назначить цветную метку. Отображение и размер иконок настраиваются в меню Gizmos над окном сцены (пункт 3D Icons).
-
Установить модуль поддержки платформы: в Unity Hub → Installs → Add modules (или из Build Settings кнопкой Install with Unity Hub), затем в Build Settings выбрать платформу, проверить сцены и нажать Build.
Источники
- Collider.OnTriggerStay // Unity Scripting API : [сайт]. — URL: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerStay.html (дата обращения: 08.07.2026).
- Publishing Builds // Unity Documentation : [сайт]. — URL: https://docs.unity3d.com/Manual/PublishingBuilds.html (дата обращения: 08.07.2026).
- Основы Unity : курс для самостоятельной работы // Stepik : [сайт]. — URL: https://stepik.org/course/213472/syllabus (дата обращения: 08.07.2026).