2015-10-24 6 views
5

申し訳ありませんが、私はここSwiftでスプライトキットゲームを持っており、ゲームが終わった後でGameSceneを再起動することに問題があります。ユーザーはすべての命を失ったときにSwift、spritekit:ゲーム終了後GameSceneを再起動するには?遅れを止める?

は今のところ、変数gameIsOverは、特定のシーン内のノードだけでなく、オフタイマーのセットを一時停止している、trueに設定されています。このタイマーが終了すると、私は自分のGame Overシーンに移動します。 Game Overシーンから、ユーザーは自宅に戻ったり、ゲームを再開することができます。私はここに私のシーンを一時停止し、私のアプリがクラッシュし、私がいない場合GameSceneがリロードされるとき、gameIsOverまだtrueに設定されているためであると

countdown(circle, steps: 120, duration: 5) { 

       //Performed when timer ends 
       self.gameSoundTrack.stop() 

       let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
       let vc = mainStoryboard.instantiateViewControllerWithIdentifier("GOViewController") 
       self.viewController!.presentViewController(vc, animated: true, completion: nil) 

       //Resetting GameScene 
       self.removeAllChildren() 
       self.removeAllActions() 
       self.scene?.removeFromParent() 
      self.paused = true 
      gameIsOver = false 
     } 

:ここ

は私がシーンの上に私のゲームに移行する方法です。私はこれがなぜからfalseに設定されていると考えられるのかわからない。

GameSceneからシーンに戻ってGameSceneに移動した後、GameSceneから私のホームビューコントローラーに戻ってGameSceneに戻った後、私のfpsカウントがずっと減少しているので、ゲーム全体がポイントまで遅れていますゲームプレイは不可能です。

これは、私がゲームシーンを提示するたびにGameSceneを適切に削除/廃棄しないと考えています。
私はここで同じ問題を抱えていると信じています:In Swift on "game over" move from scene to another UIView and dispose the scene?しかし、私はこれに新しいです、そして、彼らは彼らの問題をどのように解決したのか分かりません。

遅れを止めるためにGame Overシーンを表示するたびにGameSceneを完全にリセット/削除する方法を教えてください。

答えて

5

あなたのgameIsOver Boolは、あなたが構造体にしない限り、シーンを切り替える際に値を保持しません。だからではなく、

var gameIsOver = false 

のそれはあなたが値を変更すると、物事が起こるようにあなたが機能

を作成戻ってGameSceneへの移行については

game.IsOver = true 
//if your calling it in a different View controller or scene than where you created it just put the name before it like so 
GameViewController.game.IsOver = true 

を呼び出す

struct game { 
    static var IsOver : Bool = false 
} 

する必要があります

func goToGameScene(){ 
    let gameScene:GameScene = GameScene(size: self.view!.bounds.size) // create your new scene 
    let transition = SKTransition.fadeWithDuration(1.0) // create type of transition (you can check in documentation for more transtions) 
    gameScene.scaleMode = SKSceneScaleMode.Fill 
    self.view!.presentScene(gameScene, transition: transition) 
    } 

GameSceneにリセットしたいときはいつでも、

goToGameScene() 
+1

ohだから、それは何も問題ありません。同じ場面を何度も繰り返し呼びますか?ワオ。私はそれがゲームエンジンにとってちょっと重いと思った。 – msqar

+1

いいえ、新しいシーンを作成し、古いシーンを保持しません。あなたがナビゲーションコントローラを使用していて、セグを使用していたなら、それは違うでしょう。それがあなたを助けた場合は、正しい答えとしてマークしてください。 –

+0

私はポストの所有者ではありません:(残念ながら私はあなたにマークを与えることはできませんが、これにより私はあなたにアップ票を与えた人に助けてくれました – msqar

関連する問題