атлас текстур спрайтов остается в памяти?

В настоящее время я работаю над игрой типа шутера на тайловой карте, используя набор спрайтов. «Враги» загружаются из набора атласов текстур, в которых я храню все кадры их анимации. Пока что текстуры на карте вместе со всеми врагами и игроком потребляют в среднем от 110 до 130 МБ памяти. Проблема, которую я наблюдаю, заключается в том, что я переключаю уровни. В основном новые текстуры для этого уровня будут загружаться вместе с текстурами врагов. Теперь, когда я ухожу с первого уровня, я пытаюсь освободить все атласы текстур, но потребление памяти, похоже, все еще растет. Я видел, как он поднимался от 150 до 180, а иногда даже до 200 МБ.

Сохраняются ли атласы текстур в памяти после разыменования? Учитывая, что у меня есть несколько разных уровней, каждый со своей уникальной картой и уникальными врагами, я вижу в этом потенциальную проблему. Основываясь на других моих чтениях, кажется, что это может иметь место. Если набор спрайтов обрабатывает, когда и где освобождать атласы текстур, я не уверен, что в конечном итоге я достигну проблем с предупреждением о памяти с количеством текстур, которые я использую.


person melz2012    schedule 12.08.2014    source источник


Ответы (1)


Убедитесь, что у вас не осталось ссылок, указывающих на атлас, а затем используйте что-то вроде myTextureAtlas = nil;

Я использую вышеизложенное в -(void)willMoveFromView:(SKView *)view

person sangony    schedule 12.08.2014
comment
Я действительно делаю это. У меня есть singleton texturecache, который в основном содержит все атласы вместе со всеми анимационными действиями, созданными на основе этих атласов. Сгенерированные враги затем ссылаются на свою анимацию отсюда. в willMoveFromView я сбрасываю кэш текстур, который в основном устанавливает все атласы на ноль и удаляет все ссылки на анимацию. Интересно, возможно, отсылка к действиям врага поддерживает жизнь текстур. Я вижу, что враги удалены, но я не устанавливаю их свойства действия на ноль. - person melz2012; 13.08.2014
comment
@ melz2012 - у меня точно такие же настройки. Я обнуляю все свои объекты в willMoveFromView. К ним относятся массивы, действия, атласы, узлы, аудиоплееры и так далее. Короче говоря, все iVars и свойства объекта. - person sangony; 13.08.2014