5.5 KiB
Zenject / Extenject
Зачем это нужно
Zenject нужен для dependency injection и более управляемой сборки игровых систем.
Что важно заранее
В roadmap указан Zenject, но в текущей экосистеме нужно различать два источника:
- оригинальный
Zenject - форк
Extenject, который позиционируется как активно поддерживаемое продолжение с bug fixes и updates
Сравнение официальных источников и NuGet
На момент проверки:
- официальный
Zenjectимеет stable release9.2.0 - официальный
Extenjectимеет stable release9.2.1 - у
Extenjectесть более новые pre-release ветки9.3.0и9.3.1, где отдельно фигурируетUPM Support
Практический вывод:
- стабильный канал у
Extenjectсейчас все еще завязан не на полноценный зрелый NuGet/UPM workflow, а на официальный unity-ориентированный дистрибутив - для
Zenject/Extenjectне стоит делатьNuGet for Unityосновным способом установки в этом проекте
Если команде нужен максимально консервативный вариант, безопаснее ориентироваться на Extenject 9.2.1.
Если команде нужен именно package-manager workflow, можно рассматривать Extenject с UPM Support, но только как осознанный переход на pre-release канал.
Рекомендуемое решение для проекта
Для нового production-сценария внутри этого проекта предпочтительно выбрать один из двух режимов:
Extenject 9.2.1как стабильную базуExtenject 9.3.xтолько если команда осознанно принимает pre-release UPM-канал
По умолчанию безопаснее использовать именно Extenject, а не оригинальный Zenject.
Как установить
Вариант 1. Предпочтительный стабильный
Используй официальный release Extenject 9.2.1 и импортируй unitypackage из releases.
Этот вариант лучше, если важнее предсказуемость, чем package-manager workflow.
Вариант 2. Если нужен именно UPM workflow
Только для команды, готовой принять pre-release:
- Открой
Window > Package Manager. - Нажми
+. - Выбери
Add package from git URL.... - Вставь git URL из актуального UPM-совместимого pre-release
Extenject. - Зафиксируй выбранную версию внутри команды и не оставляй зависимость на плавающей ветке.
Если нужен именно оригинальный Zenject
Тогда бери его из modesttree/Zenject Releases и импортируй Zenject.vX.X.unitypackage.
Почему не через NuGet for Unity
Для этого пакета NuGet for Unity не должен быть основным каналом, потому что:
- пакет исторически распространяется как Unity-ориентированный framework
- актуальные рекомендации вращаются вокруг releases и Unity-специфичных способов импорта
- UPM-поддержка у
Extenjectвыглядит как отдельная новая ветка, а не как устоявшийся NuGet workflow
Как настроить после установки
Минимальная настройка для проверки:
- Создай тестовую сцену или используй отдельную sandbox-сцену.
- Проверь, что можешь добавить
SceneContext. - Проверь, что доступны элементы меню
Zenject.
Минимальная практическая настройка для проекта
На первом этапе не нужно сразу переводить весь проект на DI.
Достаточно:
- установить пакет через выбранный официальный канал
- убедиться, что
SceneContextи installers доступны - договориться, что новые runtime-системы позже будут подключаться через installers, а не через случайные singleton-зависимости
Как проверить, что всё настроено
- пакет импортировался без compile errors
- доступны
SceneContextиInstallers - тестовая сцена с
SceneContextоткрывается и не падает