Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 3.41 KB

File metadata and controls

64 lines (48 loc) · 3.41 KB

EM (Event Manager)

Что это: EM — глобальный event manager для игровых состояний, паузы и нескольких системных событий приложения. Файл: Scripts/Tools/Managers/EM.cs, пространство имён: Neo.Tools.

Как использовать:

  1. Добавьте EM на сцену как один из глобальных менеджеров.
  2. Подпишите UI, звук, аналитику и другие системы на нужные UnityEvent.
  3. Вызывайте статические методы EM.Menu(), EM.GameStart(), EM.Pause() и другие, если нужно вручную разослать событие.
  4. Обычно состояния выставляет GM, а EM используется как транспорт событий.

События

  • On Menu, On Preparing, On Game Start — вход в меню, подготовку, старт игры.
  • On Restart, On Stop Game — рестарт и остановка.
  • On Win, On Lose, On End — победа, поражение, конец.
  • On State Change — изменение GM.GameState с передачей нового состояния.
  • On Pause / On Resume — переходы паузы.
  • On Player Death — отдельное событие смерти игрока.
  • On Awake / OnFocusApplication / OnPauseApplication / OnQuitApplication — Unity lifecycle и состояние приложения.

Статические методы

Метод Что делает
Preparing() Вызывает OnPreparing.
GameStart() Вызывает OnGameStart.
Lose() Вызывает OnLose.
Win() Вызывает OnWin.
End() Вызывает OnEnd.
StopGame() Вызывает OnStopGame.
PlayerDied() Вызывает OnPlayerDeath.
Pause() Вызывает OnPause.
Resume() Вызывает OnResume.
Menu() Вызывает OnMenu.
Restart() Вызывает OnRestart.

Когда использовать

Используйте EM, если:

  • нужно разослать одно событие нескольким системам без жёстких ссылок между ними;
  • требуется простой inspector-driven event hub;
  • важно отделить изменение состояния игры от реакции на него.

Практический сценарий

Типичная цепочка такая:

  1. GM меняет своё состояние.
  2. GM вызывает соответствующий метод EM.
  3. EM рассылает UnityEvent.
  4. UI, звук, туториалы, эффекты и аналитика реагируют независимо друг от друга.

Примечания

  • EM удобно использовать вместе с GM, но он не обязан зависеть только от него.
  • Если зависимость опциональна, безопаснее получать менеджер через EM.TryGetInstance(out EM manager) вместо прямого EM.I.

См. также