Sprite Kit游戏在更改场景后崩溃回到原始场景

问题描述:

我有一款效果很棒的游戏,并且在应用商店中。我正在进行更新,在其中添加了另一个场景。当游戏启动时,它仍然可以正常工作,但如果我更改为其他场景,然后返回到第一个场景,游戏仍然可以正常工作。但是,如果我玩游戏一次,然后按下按钮,进入到其他场景,然后再回到第一个场景,游戏崩溃当我尝试与错误播放:Sprite Kit游戏在更改场景后崩溃回到原始场景

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attemped to add a SKNode which already has a parent: <SKNode> name:'(null)' position:{0, 0} accumulatedFrame:{{inf, inf}, {inf, inf}}' 

我试着在转换之前将所有儿童从场景中移除,但我仍然遇到错误。

代码来改变场景:

if ([node.name isEqualToString:@"Settings Button"]) { 
     MySettingsScene *settingsScene = [MySettingsScene sceneWithSize:self.size]; 
     [self.view presentScene:settingsScene transition:[SKTransition pushWithDirection:SKTransitionDirectionLeft duration:.5]]; 
    } 

代码改回:

if ([node.name isEqualToString:@"Back Button"]) { 
    MyScene *homeScene = [MyScene sceneWithSize:self.size]; 
    [self.view presentScene:homeScene transition:[SKTransition pushWithDirection:SKTransitionDirectionRight duration:.5]]; 
} 

线使其崩溃

+4

哪条线路导致崩溃?你是否设置了一个异常断点来查找崩溃的代码? – Fogmeister

+0

噢,对不起,我忘了那一行,我现在就添加它 – SomeGuy

+0

这不是导致崩溃的行。这只是告诉你,该应用程序已崩溃。你需要添加一个异常断点。这将停止在你自己的代码行上。 – Fogmeister

如果你确实读取日志错误时说你试图在你的代码的两个地方添加一个孩子。从而导致它崩溃。运行你的代码并仔细检查。

+0

我知道这就是导致错误的原因,只是被添加的节点没有价值,一切都是零。所以我不知道什么是被添加的,导致它崩溃,当它在改变场景之前工作正常。另外,如果我在它崩溃前删除所有的孩子,它仍然会崩溃。 – SomeGuy

听起来好像你正在关闭你当前的场景并移动到新的场景。要做到这一点,你可以[mySKView presentScene:nil];,然后进入你的新场景。