2014-05-14 124 views
0

我有一款效果很棒的遊戲,並且在應用商店中。我正在進行更新,在其中添加了另一個場景。當遊戲啓動時,它仍然可以正常工作,但如果我更改爲其他場景,然後返回到第一個場景,遊戲仍然可以正常工作。但是,如果我玩遊戲一次,然後按下按鈕,進入到其他場景,然後再回到第一個場景,遊戲崩潰當我嘗試與錯誤播放: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

如果你確實讀取日誌錯誤時說你試圖在你的代碼的兩個地方添加一個孩子。從而導致它崩潰。運行你的代碼並仔細檢查。

+0

我知道這就是導致錯誤的原因,只是被添加的節點沒有價值,一切都是零。所以我不知道什麼是被添加的,導致它崩潰,當它在改變場景之前工作正常。另外,如果我在它崩潰前刪除所有的孩子,它仍然會崩潰。 – SomeGuy

0

聽起來好像你正在關閉你當前的場景並移動到新的場景。要做到這一點,你可以[mySKView presentScene:nil];,然後進入你的新場景。