огромная память, используемая при загрузке нескольких анимаций и текстур с Cocos2d, как ее решить - PullRequest
1 голос
/ 09 февраля 2012

Я работаю над игровым процессом, который требует загрузки 27 текстурных альт (каждый 1024 * 1024) перед входом в игровую сцену

, но иногда моя игра вылетает из-за предупреждения о памяти

Я знаю27 текстурных альт будут использовать: 4 * 27 *1024* 1024 = 108 МБ памяти, что огромно, но мне действительно нужно загрузить их перед входом в игру.

Есть ли способ решить мою проблему?Любые идеи будут очень признательны!

Кстати: я использую cocos2d 1.0.1

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Лучшее предложение - пересмотреть свой дизайн и «необходимость» предварительной загрузки всех этих текстур. Я склонен предварительно загружать только наиболее часто используемые текстуры (анимации и объекты статической карты).

Например, у меня есть текстуры для анимации прогулок на карте для 16 классов персонажей. Я перегруппировал анимацию «бездействия» в 4 текстуры и предварительно загрузил их, потому что изначально, когда солдат выходит на сцену, он бездействует. Движущиеся анимации представлены отдельными текстурами, которые загружаются в режиме реального времени в зависимости от направления движения для каждого класса персонажа в движении. Когда персонажи перестают ходить (бездействуют), я удаляю неиспользуемые текстуры из кэша, а также неиспользуемые рамки спрайтов.

Также: есть и другие возможности для управления памятью. Для некоторых текстур вы можете использовать 16-битный формат (по умолчанию RGB88888). Вы можете получить выгоду, конвертировав в сжатый формат PVR (опять же, это с потерями, но может подойти для некоторых текстур)

Посмотрите здесь и там , чтобы узнать больше о форматах изображений в кокосе и о связи с потреблением памяти (а также загрузкой, скоростью рендеринга). Но еще раз, прежде чем начать оптимизацию, убедитесь, что у вас нет альтернативы подходу предварительной загрузки всех.

0 голосов
/ 09 февраля 2012

используйте jpg вместо png, это сделает непрозрачным, вы можете сделать это прозрачным по альфа-изображению этого изображения, это поможет вам уменьшить размер, который использует почти половина из вас.

...