Предупреждение памяти в Cocos2d из-за изображений
Я загружаю сцену Cocos2d, которая содержит почти 700 изображений PNG, и даже если я запускаю эту сцену непосредственно из XCode, я получаю сообщение с предупреждением о памяти вместе с длинным списком некоторых имен моих изображений в консоли...
Я правильно освобождаю их в dealloc, но когда я снова нахожусь на этой сцене, моя игра вылетает во время загрузки моей половины изображений
Это проблема загрузки большого количества текстур одновременно или проблемный код?
Как мне справиться с загрузкой такого количества изображений и правильно управлять памятью, чтобы избежать этого сбоя?
1 ответ
700 png изображений? Хммм. Хорошо, мне нравятся эти игры.
Давайте предположим, что каждое изображение "только" 128x128 пикселей. Каждая текстура занимает 64 КБ (128 раз 128 раз 4 байта). Всего на 45 МБ памяти использовано 700 таких текстур.
Если ваши текстуры в два раза больше или даже больше, KA-BOOM!
Имейте в виду, что размер файла не имеет ничего общего с текстурной памятью. Файлы могут занимать несколько мегабайт в файловой системе. Но это потому, что они сжаты. Текстуры, созданные из файлов PNG, однако не сжимаются.
Что ты можешь сделать:
- использовать текстурные атласы
- уменьшить глубину цвета текстур до 16 бит
- использовать сжатый формат PVR
TexturePacker поможет вам с этими задачами.