我正在开发一个使用ViewControllers和SpriteKit场景的spritekit游戏。基本上,应用程序的结构是你打开一个菜单(视图控制器),通过一个按钮按下模式将你移动到加载GameScene(skscene)的游戏(视图控制器)。
当您输掉游戏时,您将通过模式segue发送到屏幕上的游戏(视图控制器):gameVC?.performSegueWithIdentifier("goToGameOver", sender: gameVC)
此segue位于GameScene中,scene.gameVC = self
位于游戏视图控制器中。 gameVC
在GameScene中初始化为var gameVC: UIViewController?
。在游戏结束屏幕上,您可以返回菜单,也可以使用按钮初始化的模态段再次播放(返回游戏视图控制器)。
当你去GameScene四次以上时会出现问题。 GameScene第五次打开(无论是从菜单vc还是从vc游戏),游戏都难以置信。屏幕右下方的fps计数器表示游戏产生1.5 fps。
我认为问题在于GameViewController& GameScene没有被正确解雇(每次应用程序移动到GameScene时应用程序的内存使用量都会增加),但我不知道如何正确地解雇它们。我用过
self.removeFromParent()
self.view?.presentScene(nil)
作为尝试在segue到GameOver代码运行之前和之后立即解散GameScene的一种方式,但无济于事。我也想过放松segue,但是我无法放松到我尚未到过的视图控制器(游戏结束)。我完全没有想法,这是一个破坏游戏的错误。我真的很感激一些帮助。非常感谢。
答案 0 :(得分:3)
你基本上是在SpriteKit做你不应该做的事情。在SpriteKit中不建议使用多个视图控制器。
最好只有一个视图控制器并有多个场景(菜单场景,游戏场景)。
你应该阅读这个问题。
答案 1 :(得分:0)
嘿,我遇到了同样的问题。我把这行代码放在我的场景结束时回到我的viewcontroller,然后延迟就消失了。
self.viewController!.dismissViewControllerAnimated(true,completion:nil)