Ещё один довольно очевидный совет: не спавните объекты в корень сцены, делаите контеинеры для разных типов объектов, чтобы не создавать хаос в иерархии. Еще такие контейнеры может быть удобно использовать для пулинга, чтобы не менять родителя.Не очевидный, т. к. слишком большая вложенность и иерархия объектов бьёт по перфомансу (: Но если вы используете более старую версию Unity, вам придётся писать свою реализацию пулов или искать библиотеку в Asset Store.Если Zenject используется, то можно ещё оттуда пулы взять. Делаите отдельные Canvas для ваших окон. Проблема, с которой столкнулись мы сами: если все держать в одном Canvas, он будет полностью пересчитываться при каждом изменении объектов внутри канваса. Особенно это касается динамического анимированного интерфейса с партиклами.И не только с этим могут быть проблемы. У нас был неприятный баг, когда вся гуятина тупо пропадала в какой-то момент, т. к. много всего в одном кенвасе было. Разнесли по нескольким, проблема исчезла. Используйте Dependency Injection. Как минимум, разберитесь с Zenject — его используют с Unity чаще всего, но можете поискать альтернативные варианты или даже написать свою реализацию, сути это не меняет.На относительно крупных проекты с этим могут быть проблемы. В итоге минусов становится больше, чем плюсов. Нужно с осторожностью втаскивать в проект.
Вопрос: почему в контексте DI и юнити часто упоминается Zenject? Почему не Autofac? На бэке ASP.NET с 99% вероятности встретится именно он, потом всякие Ninject и тд.
Ещё один довольно очевидный совет: не спавните объекты в корень сцены, делаите контеинеры для разных типов объектов, чтобы не создавать хаос в иерархии. Еще такие контейнеры может быть удобно использовать для пулинга, чтобы не менять родителя.Не очевидный, т. к. слишком большая вложенность и иерархия объектов бьёт по перфомансу (:
Но если вы используете более старую версию Unity, вам придётся писать свою реализацию пулов или искать библиотеку в Asset Store.Если Zenject используется, то можно ещё оттуда пулы взять.
Делаите отдельные Canvas для ваших окон. Проблема, с которой столкнулись мы сами: если все держать в одном Canvas, он будет полностью пересчитываться при каждом изменении объектов внутри канваса. Особенно это касается динамического анимированного интерфейса с партиклами.И не только с этим могут быть проблемы. У нас был неприятный баг, когда вся гуятина тупо пропадала в какой-то момент, т. к. много всего в одном кенвасе было. Разнесли по нескольким, проблема исчезла.
Используйте Dependency Injection. Как минимум, разберитесь с Zenject — его используют с Unity чаще всего, но можете поискать альтернативные варианты или даже написать свою реализацию, сути это не меняет.На относительно крупных проекты с этим могут быть проблемы. В итоге минусов становится больше, чем плюсов. Нужно с осторожностью втаскивать в проект.
Всё бьёт по перформансу. Самая оптимизированная игра - не написанная игра.
Не представляю свою жизнь без Zenject теперь, что может пойти не так?
Вопрос: почему в контексте DI и юнити часто упоминается Zenject? Почему не Autofac? На бэке ASP.NET с 99% вероятности встретится именно он, потом всякие Ninject и тд.
капец ты умный)