如何从SKScene导航到UIViewController

时间:2017-11-11 00:11:28

标签: ios swift xcode sprite-kit viewcontroller

所以我正在制作一款游戏,如果它的游戏结束,它会带你回到主菜单。如果你完成了关卡,它会重新加载GameScene(根据func switchToNewGameWithTransition)并使用新关卡继续游戏。

我遇到的问题是:如果它进入游戏结束,我会被带回主菜单。如果我再次启动游戏并完成一个级别,则GameScene无法重新加载。好吧,相反它重新加载(我从节点计数中知道这一点)但是当运行时(SKAction.sequence([delay,sceneChange]))在func中运行switchToNewGameWithTransition没有任何变化。

每次在游戏结束后按主菜单屏幕上的开始游戏时,内存也会增加约20MB。这是由于我构建代码的方式吗?

class GameScene: SKScene {
    var viewController: UIViewController?
    ...

    run(SKAction.wait(forDuration: 1)) {

        self.viewController?.removeFromParentViewController()
        self.viewController?.dismiss(animated: true, completion: nil)
      }
    ...

    fileprivate func switchToNewGameWithTransition(_ transition: SKTransition) {
    let delay = SKAction.wait(forDuration: 1)
    let sceneChange = SKAction.run({

      let scene = GameScene(size: self.size)
      self.view?.presentScene(scene, transition: transition)
    })

    run(SKAction.sequence([delay, sceneChange]))
  }
}

class GameViewController: UIViewController {

     override func viewDidLoad() {
        super.viewDidLoad()

        let skView = self.view as! SKView


        let scene = GameScene(size: CGSize(width: 375, height: 667))

        scene.scaleMode = .fill

        scene.viewController = self
        skView.presentScene(scene)
    }
}

0 个答案:

没有答案