TGViewer
SpellSinger - разработчик игр на Unity SpellSinger - разработчик игр на Unity @spellsingergames · 548 subscribers
Post #29 1.38K
Зачем я использую Zenject. Часть 2. События

В Zenject событие называeтся Signal, очевидно, это сделано для того, чтобы не было конфликта с зарезервированным в C# словом event.

В не буду рассказывать о преимуществах Event Bus (шины событий), этой информации полно в интернете, скажу лишь, что я не представляю разработку игры без использования этого паттерна.

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

В моей игре, уровень начинается с того, что игрок нажимает кнопку влево или вправо. За ввод данных (player input) отвечает один монобех, PlayerController, который знает, когда уровень начался или ещё нет. Он и "бросает" событие PlayLevel.

Есть ряд действий, которые нужно выполнить в тот момент, когда начинается уровень:
- Камера переходит из начального положения в игровое положение (меняется offset)
- Изменяется фоновая музыка
- С экрана убирается подсказка
- Запускается процесс потребления топлива

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

В пользу Zenject'а по сравнению с событиями, реализованными с помощью Scriptable Objects, замечу, что с Zenject
1) мне не нужно присваивать значения в инспекторе, всё происходит в коде
2) я могу легко найти все места, где используется какое-то событие в IDE, поиском по местам использования класса PlayLevel

#zenject
  • 🔥 3
  • 👨‍💻 1
More from @spellsingergames
  1. Oct 1, 2026Автор
  2. Aug 31, 2026Post #235
  3. Aug 25, 2026Прошли модерацию на Crazy Games. Basic Launch продлится до 15 сентября или пока не наберет…
  4. Aug 24, 2026А мы, тем временем, идём покорять #crazy_games Вчера ночью отправили билд на модерацию. Мо…
  5. Aug 24, 20262 недели нужно рекоммендеру Яндекс игр, чтобы как-то отреагировать на изменения метрик. AR…
  6. Aug 14, 2026Шестой эпизод подкаста ГЕЙМДЕВ ПОД ПИВОМ уже во вторник, в 22:30МСК! Хорошенечко отоспитес…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →