我有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之间切换?