2015-02-04 59 views
-1

我正在開發一個Sprite Kit中的簡單遊戲,它等待一段時間切換下一個級別的場景。在時間限制結束時,如果用戶還沒有死亡並且遇到遊戲結束場景,則遊戲將場景切換到「下一級」場景,然後進入下一級。當我的角色死亡時,遊戲結束場景可以正常工作,但時間限制檢查似乎是問題所在。如何結束遊戲循環以在時間限制後更改場景?

目前在我的遊戲中,我通過在我的update方法中使用totalTimePlayed屬性來達到我的時間限制。此時遊戲會崩潰並且不允許任何更多輸入。我正在做這個檢查,並從我的更新方法中調用一個方法,所以我不知道爲什麼它會在切換場景之前繼續更新。

任何幫助表示讚賞。

回答

1

好的,在玩了一段時間後,我能夠自己回答我的問題。

我的解決方案是將switchingScenes BOOL屬性添加到我的實現中,默認情況下初始化爲NO。我在我的update方法中打了我的totalTimePlayed限制,並將isNextLevel設置爲YES。通過更新循環的下一次該代碼被執行:

if (self.isNextLevel) { 
     // if you're already in the process of switching scenes, wait 
     if (!self.switchingScenes) { 
      self.switchingScenes = YES; 
      LevelSwitchScene *levelSwitch = [LevelSwitchScene sceneWithSize:self.frame.size]; 
      levelSwitch.nextLevel = @"level2"; 
      SKTransition *transition = [SKTransition pushWithDirection:SKTransitionDirectionDown duration:0.5]; 
      [self.view presentScene:levelSwitch transition:transition]; 
     } 
    } 

所以,問題是我的場景切換隻是不停地試圖再次快於現場開關可能發生更新一遍又一遍,使其凍結。通過添加switchingScenes關鍵字,我能夠確保只調用一次該代碼塊,避免崩潰。實際的場景變化發生在10.511981秒,因此切換場景時需要注意延遲。

希望我自己的回答已經很清楚。如果有更好的方法來實現這一點,請添加您自己的解決方案。

+0

很好的解釋。 – sangony