И меня опять поразила болезнь велосипедостроения — решил простенький модуль для Dependency Injection запилить. В целом, там не то, чтоб для базовых вещей много чего сделать надо. Простейших биндингов и
Из чего выбирал:
1. По классике Zenject. Но он какой-то мёртвый. Не знаю, есть ли какой-то живой форк, но мне в Зенжекте всегда не нравилась монструозность. А потыкав код, сам убедился, что они что-то там с рефлексией перемудрили уж слишком. Плюс памяти оно лишней аллоцирует немало. Из интересного: там пулы используются даже для внутренних служебных задач, что весьма круто.
2. Reflex. Выглядит неплохо, поддерживается. Код в целом намного проще Зенжекта, всё также есть различные контексты: Проект -> сцена -> другие сцены.
3. Победил VContainer. Мелкий, быстрый и памяти меньше остальных выделяет (по словами автора). Покрывает вроде как большую часть хотелок. Код несложный, в случае чего форкну и допилю под себя. Единственный минус пока что в том, что не умеет из коробки
#unity
[Inject]
атрибута уже хватило бы. Но потом добавляются фабрики, спавн префабов, отложенная инициализация...В итоге после пары дней решил, всё же, взять готовое.Из чего выбирал:
1. По классике Zenject. Но он какой-то мёртвый. Не знаю, есть ли какой-то живой форк, но мне в Зенжекте всегда не нравилась монструозность. А потыкав код, сам убедился, что они что-то там с рефлексией перемудрили уж слишком. Плюс памяти оно лишней аллоцирует немало. Из интересного: там пулы используются даже для внутренних служебных задач, что весьма круто.
2. Reflex. Выглядит неплохо, поддерживается. Код в целом намного проще Зенжекта, всё также есть различные контексты: Проект -> сцена -> другие сцены.
3. Победил VContainer. Мелкий, быстрый и памяти меньше остальных выделяет (по словами автора). Покрывает вроде как большую часть хотелок. Код несложный, в случае чего форкну и допилю под себя. Единственный минус пока что в том, что не умеет из коробки
[Inject]
резолвить на монобехах на сцене. Приходится явно для всех указывать builder.RegisterComponentInHierarchy<Office>()
. В принципе, ничего не мешает пробежать по сцене и проверить монобехи на аттрибут field.GetCustomAttributes
, но это, всё же, будет весьма медленно для жирных сцен с кучей вложенных объектов. Ну и круто, что, если нужно будет выжать перфоманс, можно прикрутить Roslyn Source Generator для сорсгена.#unity
group-telegram.com/game_journalist_tycoon/15
Create:
Last Update:
Last Update:
И меня опять поразила болезнь велосипедостроения — решил простенький модуль для Dependency Injection запилить. В целом, там не то, чтоб для базовых вещей много чего сделать надо. Простейших биндингов и
Из чего выбирал:
1. По классике Zenject. Но он какой-то мёртвый. Не знаю, есть ли какой-то живой форк, но мне в Зенжекте всегда не нравилась монструозность. А потыкав код, сам убедился, что они что-то там с рефлексией перемудрили уж слишком. Плюс памяти оно лишней аллоцирует немало. Из интересного: там пулы используются даже для внутренних служебных задач, что весьма круто.
2. Reflex. Выглядит неплохо, поддерживается. Код в целом намного проще Зенжекта, всё также есть различные контексты: Проект -> сцена -> другие сцены.
3. Победил VContainer. Мелкий, быстрый и памяти меньше остальных выделяет (по словами автора). Покрывает вроде как большую часть хотелок. Код несложный, в случае чего форкну и допилю под себя. Единственный минус пока что в том, что не умеет из коробки
#unity
[Inject]
атрибута уже хватило бы. Но потом добавляются фабрики, спавн префабов, отложенная инициализация...В итоге после пары дней решил, всё же, взять готовое.Из чего выбирал:
1. По классике Zenject. Но он какой-то мёртвый. Не знаю, есть ли какой-то живой форк, но мне в Зенжекте всегда не нравилась монструозность. А потыкав код, сам убедился, что они что-то там с рефлексией перемудрили уж слишком. Плюс памяти оно лишней аллоцирует немало. Из интересного: там пулы используются даже для внутренних служебных задач, что весьма круто.
2. Reflex. Выглядит неплохо, поддерживается. Код в целом намного проще Зенжекта, всё также есть различные контексты: Проект -> сцена -> другие сцены.
3. Победил VContainer. Мелкий, быстрый и памяти меньше остальных выделяет (по словами автора). Покрывает вроде как большую часть хотелок. Код несложный, в случае чего форкну и допилю под себя. Единственный минус пока что в том, что не умеет из коробки
[Inject]
резолвить на монобехах на сцене. Приходится явно для всех указывать builder.RegisterComponentInHierarchy<Office>()
. В принципе, ничего не мешает пробежать по сцене и проверить монобехи на аттрибут field.GetCustomAttributes
, но это, всё же, будет весьма медленно для жирных сцен с кучей вложенных объектов. Ну и круто, что, если нужно будет выжать перфоманс, можно прикрутить Roslyn Source Generator для сорсгена.#unity
BY Game journalist Tycoon
Share with your friend now:
group-telegram.com/game_journalist_tycoon/15