2016-07-27 7 views
1

私はホームとプレイの2つのシーンがあります。再生シーンへの移行は、ホームシーンへの移行に比べて実際には遅いです。私はこれが、私のプレイシーンにはより多くの問題があるからだと思う。私はプレイシーンをプリロードすることができますか?または、遷移をよりシームレスにしますか?遅いSksceneの移行

私はこのフォーラムの答えに興味がありますPreload a Scene to prevent lag? しかし、私はどこから始めるべきか分かりません。どこで私は答えここ

のパートAおよびBを配置しないことは、私は他のソリューションで結構です

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    let touch = touches 
    let location = touch.first!.locationInNode(self) 
    let node = self.nodeAtPoint(location) 

    if (node.name == "Balloon") { 

     let sceneAction = SKAction.runBlock({ 
      let secondScene = Scene2(size: self.size) 
      let transition = SKTransition.fadeWithDuration(1) 
      secondScene.scaleMode = SKSceneScaleMode.AspectFill 
      self.scene!.view?.presentScene(secondScene, transition: transition) 
     }) 
      PlayButton.runAction(SKAction.sequence([sound,SKAction.animateWithTextures(array, timePerFrame: 0.1),sceneAction,SKAction.waitForDuration(1)])) 


    }  

を使用していますものです。

おかげ

答えて

1

私はこれを行うと動作します: はにHomeSceneのdidViewは、ホームシーンで常にpreloadGameScene() を入れて:

fileprivate var nextScene: SKScene? 

func preloadGameScene() { 
    let qualityOfServiceClass = QOS_CLASS_BACKGROUND 
    let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0) 
    dispatch_async(backgroundQueue, { 
     self.nextScene = GameScene(fileNamed:"yoursksfilename") 
     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      print("SCENE LOADED") 
      let loading = self.childNodeWithName("Loading") as? SKLabelNode 
      self.playButton?.hidden = false 
      self.playButton?.alpha = 0 
      //loading?.hidden = true 
      self.playButton?.runAction(SKAction.fadeAlphaTo(1.0, duration: 0.4)) 
      loading!.runAction(SKAction.fadeAlphaTo(0.0, duration: 0.4)) 
     }) 

    }) 
} 

goToGameScene()は、ボタンの個人SKButtonクラスによって呼び出されます。

func goToGameScene() { 
     guard let nextScene = nextScene else {return} 
     let transition = SKTransition.crossFadeWithDuration(0.5) 
     nextScene.scaleMode = .AspectFill 
     scene!.view?.presentScene(nextScene, transition: transition) 
    } 

UPDATE SWIFT 3

fileprivate var nextScene: SKScene? 

func preloadGameScene() { 
     let qualityOfServiceClass = DispatchQoS.QoSClass.background 
     let backgroundQueue = DispatchQueue.global(qos: qualityOfServiceClass) 
     backgroundQueue.async(execute: { 
      self.nextScene = GameScene(fileNamed:"yoursksfilename") 
      DispatchQueue.main.async(execute: {() -> Void in 
       print("SCENE LOADED") 
       let loading = self.childNode(withName: "Loading") as? SKLabelNode 
       self.playButton?.isHidden = false 
       self.playButton?.alpha = 0 
       //loading?.hidden = true 
       self.playButton?.run(SKAction.fadeAlpha(to: 1.0, duration: 0.4)) 
       loading?.run(SKAction.fadeAlpha(to: 0.0, duration: 0.4)) 
      }) 

     }) 
    } 
+0

ねえ応答に感謝します。私は速い3のためにこれを試み、それdoesnt仕事。あなたはあなたの答えを更新していただけますか? – Yraw

+0

@Yrawは更新を確認します –

+0

「Gameconfigurationにメンバーレベルがありません」というエラーが表示されます。 – Yraw

関連する問題