посмотреть, какие файлы находятся в Frame Cache - PullRequest
0 голосов
/ 20 февраля 2012

У меня много плитов в моей игре - для каждого уровня.Я использую это, чтобы выгрузить предыдущий frameCache,

for(int i=1;i<stage;i++)
    [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:[NSString stringWithFormat:@"candys%i.plist",i]];

, но через некоторое время кажется, что игра становится немного медленнее.

  1. Я также загружаю в режиме реального времени, изображения, подобные этому:
sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"candy%i.png",1]];

, где candy1 - это спрайт в таблице спрайтов в кэше, который загружается в РЕАЛЬНОМ времени, что означает много развторой.это может быть плохо?это загружает память, чтобы получить спрайт из spriteSheet много раз в секунду?я должен предварительно определить это?

большое спасибо.

1 Ответ

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

Вы не хотите загружать / выгружать отдельные кадры спрайта.Рамка спрайта ссылается на текстуру.Обычно это текстурный атлас, который используют многие различные спрайт-фреймы.Фрейм спрайта содержит, возможно, 16 байт данных.Текстура может иметь размер до 16 мегабайт.

Поэтому, если вы не удалите весь текстурный атлас и все связанные с ним спрайт-кадры, все, что вы получите, - это снижение производительности, поскольку вы часто освобождаете и загружаете спрайт-кадры.Если вы делаете это несколько раз в секунду, вы тратите много времени только на загрузку / выгрузку спрайт-кадров.

Правило: загружайте всю сцену впереди, сохраняйте все в памяти до конца сцены.Только если вся сцена не помещается в память сразу, вы должны рассмотреть возможность выгрузки / перезагрузки объектов и данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...