Всем доброго времени суток. У меня следующая проблема: загрузка текстур для GUI занимает слишком много памяти, что приводит к вылету из игры. Теперь конкретнее. Имеется рабочий массив типа Texture2D ну скажем на 20 элементов. В определённый момент (конкретно при заходе пользователя в определённую категорию) в этот массив с помощью вот такой конструкции подгружаются текстуры:
levelImg = new Texture2D[20];
for(int j = 0; j < 20; j++) {
levelImg[j] = (Texture2D) Resources.Load(base[j], typeof(Texture2D));
}
При этом происходит загрузка текстур не в графическую память, а в оперативную. Каждая текстурка где-то по 200 кб, и использованная оперативная память при это увеличивается где-то мб на 15 а графическая всего на 1 мб. Так вот, если пользователь выходит из данной категории, то я делаю следующее levelImg = new Texture2D[0]. При этом использованная графическая память освобождается, но оперативная нет. В принципе 15 метров не критично, но если представить, что таких категорий порядка 10, как-то не очень хорошо, тем более если учесть, что это гуи. Для айфона такая схема вообще приводит к вылету из приложения при последовательном заходе в несколько категорий. Я привык к программирования на С++, где выделение и освобождение памяти осуществляется в ручную, в С# я новичок. Но, как я понял, он автоматически делает переменные ссылками и сам выделяет память в динамической кучи и также освобождает эту память, когда на неё не остаётся ссылок. По логике вещей levelImg = new Texture2D[0] должна уничтожить все ранее созданные ссылки, а следовательно память должна освободиться. Вообщем надеюсь проблема понятна. Кто что может подсказать или посоветовать.