@Ldfa
Начинающий Unity3d разработчик-самоучка

Префабы с MonoBehaviour в Юнити разделяют общие графические ресурсы или нужно использовать ScriptableObject?

Допустим у меня есть префаб Enemy, у него есть компонент SpriteRenderer с назначенным спрайтом. Если инстацировать 100 таких префабов, то в памяти компоненты SpriteRenderer будут ссылаться на 1 спрайт, или для каждого будет выделена своя область в памяти?

Или в целях экономии ресурсов нужно использовать ScriptableObject и при инициализации префаба назначать спрайт из SO?

Вопрос стоит в том, где лучше хранить ссылку на спрайт для объектов, которые потенциально могут исчисляться сотнями - в MB префаба или SO, ссылка на который будет в MB префаба
  • Вопрос задан
  • 37 просмотров
Решения вопроса 2
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
У вас в вопросе уже ответ:
хранить ссылку на спрайт для объектов, которые потенциально могут исчисляться сотнями
Т.е., одна ссылка на один спрайт. Сколько объектов её используют - не важно, в памяти то будет только один спрайт. Где хранится сама ссылка - тоже не столь важно.

Чтобы убедится наверняка, сделайте тест, оба варианта, и посмотрите в профайлере Unity потребление памяти (а лучше в Memory Profiler).
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Где бы вы не хранили ссылки, проблема в том, что как только этот объект - хранитель ссылок, будет загружен все эти спрайты тоже будут загружены в память, даже если не один из них не показывается. Лучше такие спрайты загружать из ресурсов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы