Страница 1 из 1

Разные сцены или всё в одном?

СообщениеДобавлено: 27 июн 2023, 19:26
NOVA
Привет. Решил все сцены со всеми объектами объединить в одну. Меняется всё методом отключения. Замечено - тормоза. Походу все материалы и текстуры всех сцен сразу прогружаются в память смартфона. С каждой активацией и деактивацией новой сцены начинаются тормоза на самых простых материалах.
Вопрос. Если разделить всё на разные сцены с загрузкой оперативная память по материалам и текстурам будет сбрасываться?

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 27 июн 2023, 20:19
1max1
При смене сцены будут выгружаться неиспользуемые объекты из памяти через Resources.UnloadUnusedAssets. К объектам относятся как объекты сцены, так и созданные через код по типу new Texture2D и тд, на которых нет ссылок. Для предотвращения фризов надо загружать сцены через LoadSceneAsync.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 11:14
Alkos26Rus
NOVA писал(а):Походу все материалы и текстуры всех сцен сразу прогружаются в память смартфона.

Ну если ты имитировал загрузку сцены простым включением\отключением объектов, то конечно все в память загружается при загрузке сцены, а фризы связанны с этой самой активацией\деактивацией

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 14:11
krauser0993
Ну если ты имитировал загрузку сцены простым включением\отключением объектов, то конечно все в память загружается при загрузке сцены, а фризы связанны с этой самой активацией\деактивацией

даже изначально выключенные объекты жрут память. пришлось удалить со сцены, создаю префабы

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 15:46
Tolking
Ну если на сцене есть ссылка на префаб, он тоже грузится в память...

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 16:03
krauser0993
Tolking писал(а):Ну если на сцене есть ссылка на префаб, он тоже грузится в память...

верно, но гораздо меньше.
проверял на практике, сцена стала грузиться быстрее и перестало вылетать.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 18:00
NOVA
Спасибо за полезную инфу.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 18:59
Alkos26Rus
krauser0993 писал(а):
Ну если ты имитировал загрузку сцены простым включением\отключением объектов, то конечно все в память загружается при загрузке сцены, а фризы связанны с этой самой активацией\деактивацией

даже изначально выключенные объекты жрут память. пришлось удалить со сцены, создаю префабы

Ну да выключенные жрут, а я про что. И прямые ссылки на префаб тоже жрут, то что ты создаешь префабы скорей всего ничего не меняет, нужно их создавать из ресурсов

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 20:55
waruiyume
нужно их создавать из ресурсов

А потом удивляться: а чего это, на андроиде, пустая сцена с прелодером, на старте приложения, по пол минуты грузится.
У юнитеков в блоге написаны правила использование папки ресурсов, первое правило- не использовать.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 21:12
Saltant
Используте Addressables и доставку контента удаленно. Все нормально работает при такой схеме.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 23:04
Alkos26Rus
waruiyume писал(а):
нужно их создавать из ресурсов

А потом удивляться: а чего это, на андроиде, пустая сцена с прелодером, на старте приложения, по пол минуты грузится.
У юнитеков в блоге написаны правила использование папки ресурсов, первое правило- не использовать.

Да с чего это вдруг, я пользую загрузку ресурсов почти везде где можно и ничего. Понятно уровни только дурак будет грузить ресурсами, для этого асинхронная загрузка сцен есть. Но например у меня 100 окон в интерефейсе, у них там хренова гора картинок и что предлагаешь мне все их грузить на старте? Или проще загрузить окно по надобности? Или 100 юнитов разных видов, которые никогда на сцене не будут одновременно, ну подгрузил нужный и все, вчем проблема? Можно предзагрузку нужных ссылок при старте сцены сделать если тебя фризы будут смущать во время выполнения. Зато сцены загружаются быстро и никакого ненужного хлама в памяти.

А потом удивляться: а чего это, на андроиде, пустая сцена вылетает. По накидают хренову гору прямых ссылок

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 28 июн 2023, 23:35
waruiyume
Ну вам то лучше знать.
3.1. Best Practices for the Resources System
Don't use it.

https://learn.unity.com/tutorial/assets ... 002053b5a6
Пример из личного опыта:
Ассеты лежали в ресурсах, игра на андроиде грузилась в среднем секунд 25, причём мола висеть загрузочная картинка, а мог и вообще серый экран.
Закинули абсолютно всё, что было в ресурсах, в сцену лоби- игра грузится 5 секунд, причём не серый экран, а переход из прелодера в сцену лоби, со шкалой загрузки.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 29 июн 2023, 10:22
Alkos26Rus
waruiyume писал(а):Пример из личного опыта:
Ассеты лежали в ресурсах, игра на андроиде грузилась в среднем секунд 25, причём мола висеть загрузочная картинка, а мог и вообще серый экран.
Закинули абсолютно всё, что было в ресурсах, в сцену лоби- игра грузится 5 секунд, причём не серый экран, а переход из прелодера в сцену лоби, со шкалой загрузки.


Не знаю, я на старте время загрузки игры не замерял, возможно дольше. Но вот что точно я замерял это время загрузки между сценами и профайлерил память устройства. Как по мне лучше при запуске игры подождать дольше и потом при сменах сцен не ждать как подгружается весь ненужный хлам.

Не используйте его.
Эта сильная рекомендация сделана по нескольким причинам:
Использование папки «Ресурсы» затрудняет детальное управление памятью.
Неправильное использование папок Resources увеличит время запуска приложения и продолжительность сборки.
По мере увеличения количества папок ресурсов управление активами в этих папках становится очень сложным.
Система ресурсов снижает способность проекта доставлять пользовательский контент на определенные платформы и исключает возможность постепенного обновления контента.
Варианты AssetBundle — это основной инструмент Unity для настройки контента для каждого устройства.

Как по мне тут имеет место быть только последний пункт, все остальное - пустое. Что значит "Неправильное использование папок Resources"? Неправильное использование чего угодно приведет к проблемам, вывод используйте правильно. Дальше "становится очень сложным" , сложным для кого, для устройства или для меня, мне не сложно и как с эти быть? ". "затрудняет детальное управление памятью" - не знаю о чем тут вобще речь. У меня лично проблем с подгрузкой ресурсов нет, я с его помощью решил 2 проблемы, 1-долгая загрузка сцен, 2 - вылеты игры на некоторых устройствах с недостаточной памятью. И если это работает с чего я должен отказаться от использования Resources.

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 04 июл 2023, 03:36
Woolf
krauser0993 писал(а):
Ну если ты имитировал загрузку сцены простым включением\отключением объектов, то конечно все в память загружается при загрузке сцены, а фризы связанны с этой самой активацией\деактивацией

даже изначально выключенные объекты жрут память. пришлось удалить со сцены, создаю префабы


а еще лучше грузить через Addressables
https://docs.unity3d.com/Packages/com.u ... index.html

Re: Разные сцены или всё в одном?

СообщениеДобавлено: 04 июл 2023, 04:51
DbIMok
Alkos26Rus писал(а):вывод используйте правильно

если вы знаете, как их использовать правильно, то опишите, каких правил вы придерживаетесь. что правильно, а чего делать нельзя
Alkos26Rus писал(а):У меня лично проблем с подгрузкой ресурсов нет

хорошо, а как дела с выгрузкой?