@MishkaVNorky

Ссылки на объекты (типа менеджер), почему он всё сразу грузит в память?

Привет друзья, очередная интересная тема к размышлению.
Нужно помощь знающих.

Варианты разные, но допустим у нас есть ScriptableObject, у него всего 1 переменная
List<GameObject> items;

Для теста я создал большой спрайт, 70 метров где то в памяти он. На сцену поставил Sprite Renderer, в него запихал спрайт, сделал префаб и удалил.

Ссылку на префаб добавил в ScriptableObject .

5bebf055b160b375492595.png

Так почему, даже просто загрузив из ресурсов этот ScriptableObject (в котором ТОЛЬКО ссылки на префабы), ОН СРАЗУ грузит в память весь гейм объект (в частности он сразу грузит изображение из Sprite Renderer). При том, то я даже ничего не делал, не создавал, не инициировал.

5bebefe52a237493905880.png

Я хочу сделать просто базу из ScriptableObject что бы она хранила ссылки на префабы, для конкретной задачи.

P.S. Сразу скажу что из других мест ничего НЕ грузит. До нажатия кнопки тестовой, изображение НЕ загружено, только после нажатия (когда идет загрузка ScriptableObject из ресурсов) уже грузит изображение
  • Вопрос задан
  • 351 просмотр
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
Такова механика. Instantiate - это не загрузка, а создании копии, поэтому оригинал должен быть загружен к этому моменту. Если нужно грузить именно в нужный момент, используйте Resource.Load(path)
Ответ написан
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
При открытии сцены и загрузке из ресурсов Юнити ищет все связанные объекты и загружает их в память, просто так хранить ссылки без загрузки нельзя, можно только хранить самодельные идентификаторы и грузить по ним объекты из ресурсов когда надо. Ещё можете попробовать Addressable Asset System, этот пакет сыроват немного, но может помочь.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы