2016-10-19 31 views
0

私はXcodeのSwift3を使ってプログラムを書いています。自分のプログラムでSpriteKitとSKSceneを使用しています。ご存知のように、gamescene.sksの(ビューが変更された場合でも)常に実行される定義済みの更新機能があります。パフォーマンスに問題がなくSKSceneを一時停止および停止する方法はありますか?

私は知っている "self.scene.view.paused = YES;"常に呼び出される更新関数に対しては機能しません。

SKSceneとその更新機能を一時停止して停止する方法はありますか?

+1

あなたは何について話していますか? View.pausedはspritekits更新メソッドを呼び出すことからビューを停止し、scene.pauseはすべての子を停止させますが、更新はまだ発生します – Knight0fDragon

+0

@ Knight0fDragonあなたはいつも私の質問にコメントしています。どのように私が更新機能を一時停止/停止できるかを尋ねています。言い換えれば、どうやって更新ができないのかということです。私は知っている "self.scene.view.paused = YES;"更新を止めることはなく、私はその人のやり方を尋ねています。 –

+1

あなたは自分のコメントを理解できませんでした。 "self.scene.view.paused = YES;"私は混乱しているので、更新を一時停止します – Knight0fDragon

答えて

0

リンゴDemoBotは、常にチェックアウトするのに良いプロジェクトです。

ゲームを一時停止する最善の方法は、ワールドノードを作成し、skViewを一時停止する代わりにそのノードを一時停止することです。

let worldNode = SKNode() 

あなたのGameSceneのdidMoveToViewに追加してください。あなたは

worldNode.isPaused = true 
physicsWorld.speed = 0 

とあなたの履歴書の方法あなたに言うあなたの一時停止の方法に比べてworldNode

worldNode.addChild(SOMENODE) 
worldNode.addChild(SOMENODE2) 

に一時停止したいすべてのノード(またはSKActions)を追加するより

addChild(worldNode) 

たとえば

worldNode.isPaused = false 
physicsWorld.speed = 1 

更新方法よりもworlNodeが一時停止していると早く終了できます

override func update(_ currentTime: TimeInterval) { 

    guard !worldNode.isPaused else { return } 

    // rest of your code 
} 

これが役に立ちます。

関連する問題