我有一款效果很好的游戏,位于应用程序商店中。我正在进行更新,其中添加了另一个场景。当游戏启动时它仍然可以正常工作,但如果我改变到另一个场景然后回到第一个场景,游戏仍然可以正常工作。但是,如果我玩游戏一次,然后按下按钮转到另一个场景,然后回到第一个场景,当我尝试播放错误时游戏崩溃:
*** 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]];
}
导致它崩溃的行
答案 0 :(得分:0)
如果您确实阅读了日志错误,则表示您尝试在代码中的某处添加两次子项。从而导致它崩溃。运行您的代码并仔细检查。
答案 1 :(得分:0)
听起来您正想要解除当前场景并转移到新场景。要做到这一点,你可以[mySKView presentScene:nil];
,然后转移到你的新场景。