Проблема с ОЗУ

Раздел, посвящённый самому важному - скорости.

Проблема с ОЗУ

Сообщение Max05643 13 дек 2017, 19:51

Я создал пустой проект, сделал в нем 2 сцены, в сцены накидал спрайтов просто для теста, а также повесил скрипт на камеры (в 2 сценах) для перехода между сценами через определенный промежуток времени.
Скрипт:
Синтаксис:
Используется csharp
        public string n = "";
        float time = 1f;
        bool a = false;

        void Start () {

                a=false;
                time = 1f;
                Application.targetFrameRate = 30;
        }

        void Update()
        {

                if (Time.frameCount % 30 == 0) {
                        System.GC.Collect ();

                        Resources.UnloadUnusedAssets ();
                }

                time-=Time.deltaTime;
                if (!a && time < 0f)
                {
                        a = true;
                        UnityEngine.SceneManagement.SceneManager.LoadSceneAsync (n);
                }
        }

 

Проблема в том, что в скомпилированном виде игра постоянно тратит все больше и больше оперативной памяти. Потребление растет медленно (обычно 10-20 Кб при смене сцены, но бывает и больше), но для крупного проекта это может быть неприятным. Пробовал убирать System.GC.Collect и Resources.UnloadUnusedAssets из скрипта, но результат остался прежним. Пробовал смотреть в Profiler, но кроме того, что ненужные спрайты выгружаются из ОЗУ, ничего не увидел. Версия Unity - 2017.2.0f3. В чем может быть проблема?
Max05643
UNец
 
Сообщения: 2
Зарегистрирован: 13 дек 2017, 19:31

Re: Проблема с ОЗУ

Сообщение jetyb 14 дек 2017, 07:32

Вижу загрузку сцены, но не вижу ее выгрузки.
Сколько места занимает файл сцены? Даже если сама сцена пуста, она может содержать какие-то данные об освещении, окклюжн куллинге, навигации.., которые занимают место.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Проблема с ОЗУ

Сообщение Max05643 14 дек 2017, 16:47

jetyb писал(а):Вижу загрузку сцены, но не вижу ее выгрузки.

У меня в каждой из 2 сцен висит этот скрипт на камере, поэтому они по очереди сменяют друг друга.

jetyb писал(а): Даже если сама сцена пуста, она может содержать какие-то данные об освещении, окклюжн куллинге, навигации.., которые занимают место.

Я это понимаю, но я специально для этого вызываю Resources.UnloadUnusedAssets. Да и в документации вроде написано, что все данные о старой сцене должны выгружаться при загрузке новой автоматически. Вроде бы и ненужные спрайты выгружаются из памяти (в Profiler смотрел). Или как-то по-другому нужно выгружать?
Max05643
UNец
 
Сообщения: 2
Зарегистрирован: 13 дек 2017, 19:31


Вернуться в Оптимизация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2