【发布时间】:2014-05-01 05:29:54
【问题描述】:
当我在游戏中点击重试按钮时,我希望它重新加载 MainScene。我正在这样做:
-(void)retry
{
SKTransition *transition = [SKTransition fadeWithDuration:.4];
MainScene *gameOver = [[MainScene alloc] initWithSize:self.size];
[gameOver didMoveToView:self.view];
[self.scene.view presentScene:gameOver transition:transition];
}
但是,每次我点击重试时,这都会导致内存/CPU 使用率增加(很多)。大约重试 10-20 次后,会有明显的延迟。
我将我的所有 SKEmitterNode 和 SKSpriteNode 都设为静态并修复了内存问题,所以我怀疑我的精灵、发射器等没有从内存中释放,并且每次重试时都会重新加载,使其翻倍。
我正在像这样加载精灵/发射器:
@implementation MainScene {
SKEmitterNode *_bubbleEmitter;
SKSpriteNode *_sunglasses;
...
}
- (id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size])
{
_sunglasses = [SKSpriteNode spriteNodeWithImageNamed:@"sunglasses"];
[_sunglasses setPosition:CGPointMake(self.size.width/2, self.size.height + 10)];
[self addChild:_sunglasses];
...
}
return self;
}
我是加载精灵还是重试错误?
【问题讨论】:
-
@ElTomato 是的,我想到了,但我不确定要改变什么。
标签: ios sprite-kit skscene skview