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