Ios8 双击使游戏崩溃

Ios8 双击使游戏崩溃,ios8,sprite-kit,skscene,Ios8,Sprite Kit,Skscene,我是SpriteKit游戏开发新手。 在我的游戏中,当角色触摸敌人时,它会在场景上方显示游戏并重新启动 然而,游戏结束后的场景显示,游戏中的double正在使应用程序崩溃。 这是我在主游戏场景中的代码 - (void)gameOver { GameOver *over = [[GameOver alloc] initWithSize:self.size]; SKTransition *trans = [SKTransition flipHorizontalWithDuration

我是
SpriteKit
游戏开发新手。 在我的游戏中,当角色触摸敌人时,它会在场景上方显示游戏并重新启动

然而,游戏结束后的场景显示,游戏中的double正在使应用程序崩溃。 这是我在主游戏场景中的代码

- (void)gameOver
{
    GameOver *over = [[GameOver alloc] initWithSize:self.size];
    SKTransition *trans = [SKTransition flipHorizontalWithDuration:0.5];
    [self.view presentScene:over transition:trans];
}
这是游戏结束的场景

- (instancetype)initWithSize:(CGSize)size
{
    self = [super initWithSize:size];
    {
        SKLabelNode *lblGameOver = [[SKLabelNode alloc] initWithFontNamed:@"Chalkduster"];
        lblGameOver.text = @"Game Over";
        lblGameOver.position = CGPointMake(self.size.width/2, self.size.height/2);
        lblGameOver.fontSize = 35;
        lblGameOver.fontColor = [UIColor whiteColor];
        lblGameOver.zPosition = 2;
        [self addChild:lblGameOver];
    }

    return self;
}

- (void)didMoveToView:(SKView *)view
{
    [super didMoveToView:self.view];

    UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc]
                                      initWithTarget:self action:@selector(newGame)];
    [view addGestureRecognizer:tapper];
}

- (void)newGame
{
    GameScene * scene = [[GameScene alloc] initWithSize:self.size];
    SKTransition *trans = [SKTransition flipHorizontalWithDuration:0.5];
    [self.view presentScene:scene transition:trans];
}
当我在新游戏场景中双击时,会使我的应用程序崩溃。 错误消息是

Thread 1 : EXC_BAD_ACCESS (code=1,address=0x0)

我如何修复它?

在您的didMoveToView方法中尝试以下操作:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(newGame)];
[self.view addGestureRecognizer:tapRecognizer];
tapRecognizer.numberOfTapsRequired = 2; // 1 for a single tap or 2 for a double tap

有一段时间我一直在玩点击手势,但我最好的猜测是,你从未从视图中删除旧的点击手势,它试图调用一个已经消失的方法。在呈现下一个场景之前,可能需要为该轻触手势创建属性,并将其从视图中删除。