Предупреждение памяти в Cocos2d из-за изображений

Я загружаю сцену Cocos2d, которая содержит почти 700 изображений PNG, и даже если я запускаю эту сцену непосредственно из XCode, я получаю сообщение с предупреждением о памяти вместе с длинным списком некоторых имен моих изображений в консоли...

Я правильно освобождаю их в dealloc, но когда я снова нахожусь на этой сцене, моя игра вылетает во время загрузки моей половины изображений

Это проблема загрузки большого количества текстур одновременно или проблемный код?

Как мне справиться с загрузкой такого количества изображений и правильно управлять памятью, чтобы избежать этого сбоя?

1 ответ

Решение

700 png изображений? Хммм. Хорошо, мне нравятся эти игры.

Давайте предположим, что каждое изображение "только" 128x128 пикселей. Каждая текстура занимает 64 КБ (128 раз 128 раз 4 байта). Всего на 45 МБ памяти использовано 700 таких текстур.

Если ваши текстуры в два раза больше или даже больше, KA-BOOM!

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

Что ты можешь сделать:

  • использовать текстурные атласы
  • уменьшить глубину цвета текстур до 16 бит
  • использовать сжатый формат PVR

TexturePacker поможет вам с этими задачами.

Другие вопросы по тегам