Я делаю свою первую игру, и до сих пор моя единственная проблема - использование памяти (я не заплатил сбор за разработку, поэтому запускаю ее в симуляторе). До сих пор это занимает около 23 МБ, из того, что я прочитал, это много. Это правда? Во-первых, в моем главном меню моя самая большая проблема - мой фон, он занимает 2 МБ + памяти. Это нормально? Во-вторых, фон в моей игровой сцене также занимает 2 МБ +. Это нормально? В-третьих, у меня есть 2 CCSpriteFrameCaches, один из которых имеет 55 .PNG-файлов, а другой - 12. Один с 55 изображениями занимает около 9 МБ памяти. Это звучит нормально? Второй занимает около 3 МБ. Это звучит нормально?
55 изображений не добавляются в слой до тех пор, пока не будет нажата кнопка (которая затем занимает еще больше памяти около 7 МБ, не знаю почему). Затем при нажатии второй кнопки первое изображение удаляется, а второе изображение добавляется. Затем, когда первая кнопка нажимается снова, второе изображение удаляется и добавляется третье изображение (и так далее, и так далее, четвертое). Мой вопрос: лучше ли использовать CCSpriteFrameCache или CCSprite? Или есть какая-то альтернатива.
Если у кого-то есть лучший способ сделать это, пожалуйста, дайте мне знать. ЛЮБАЯ помощь очень ценится!
Пример кода:
-(void)buttons:(CGPoint)touchLocation {
if (CGRectContainsPoint(leftB.boundingBox, touchLocation) && tapP == YES && paused == NO) {
if (count == 1)
{
isBOP = YES;
count = 2;
} else if (count == 3)
{
[bspriteSheet removeChild:_b cleanup:YES];
[pspriteSheet removeChild:_p cleanup:YES];
_p = [CCSprite spriteWithSpriteFrameName:@"p3.png"];
[pspriteSheet addChild:_p];
count = 4;
_p.position = ccp(240, 215);
_b = [CCSprite spriteWithSpriteFrameName:@"b2.png"];
_b.position = ccp(240, 158);
[bspriteSheet addChild:_b];
}
if (CGRectContainsPoint(rightB.boundingBox, touchLocation) && tapP == YES && paused == NO) {
if (count == 2)
{
[self removeChild:gb cleanup:YES];
[pspriteSheet removeChild:_p cleanup:YES];
_p = [CCSprite spriteWithSpriteFrameName:@"p2.png"];
_p.position = ccp(240, 215);
[pspriteSheet addChild:_p];
_b = [CCSprite spriteWithSpriteFrameName:@"b1.png"];
_b.position = ccp(240, 158);
[bspriteSheet addChild:_b];
count = 3;
} else if (count == 4)
{
[bspriteSheet removeChild:_b cleanup:YES];
[pspriteSheet removeChild:_p cleanup:YES];
_p = [CCSprite spriteWithSpriteFrameName:@"p4.png"];
[pspriteSheet addChild:_p];
count = 5;
_p.position = ccp(240, 215);
_b = [CCSprite spriteWithSpriteFrameName:@"b3.png"];
_b.position = ccp(240, 158);
[bspriteSheet addChild:_b];
}