在没有内存上升的情况下在SKScene和UIViewControllers之间切换

时间:2015-01-11 16:28:16

标签: ios swift uiviewcontroller sprite-kit skscene

我有3个UIViewControllers。第一个控制器 - 菜单游戏。第二场比赛。第三个 - Game Over控制器。 在第二个控制器中,我有一个SKView与我的游戏场景。 我在故事板中在1-st控制器和2-nd控制器的按钮(Start Game)之间创建了segue。并且在第3个控制器(轻敲手势)和第1个控制器之间进行切换。所有细分都是"显示"。

在第二个控制器中,我创建了以下内容:

override func viewDidLoad() {
   NSNotificationCenter.defaultCenter().addObserver(self, selector: "showGameOverViewController", name: "showGameOverViewController", object: nil)
}
func showGameOverViewController() -> Void {
   performSegueWithIdentifier("gameOverSegue", sender: nil)
}

然后,当我需要从场景(在GameScene.swift中)切换到第3个控制器时,我打电话给:

self.view?.presentScene(nil)
NSNotificationCenter.defaultCenter().postNotificationName("showGameOverViewController", object: nil)

这种方式有效但效果不好..当我点击第一个控制器中的按钮时,第二个控制器然后按照方法调用并且场景正在初始化:

override func viewDidLoad() {
   let skView = self.view as SKView
   if skView.scene == nil {
      let gameScene = GameScene(size: skView.bounds.size)
      gameScene.scaleMode = .AspectFill
      skView.presentScene(gameScene)
   }
}

所以我有一个问题。当我完成游戏后,再次转到第一个控制器并点击开始游戏按钮,然后我的应用程序的内存正在上升! 当我从Scene转到第3个控制器时,我的应用程序的内存正在上升。记忆的兴起一次又一次地发生。

我选择这种方式是因为我的SKS编辑器不起作用,我决定不以编程方式创建菜单场景和游戏场景。我认为在Interface Builder中创建菜单会更好更快,我决定尝试这种方式。我对解决问题的答案感兴趣。

请帮助我..如何在没有内存上升的情况下在SKScene和UIViewControllers之间切换?

0 个答案:

没有答案