2016-08-23 74 views
0

我正在使用ViewControllers和SpriteKit场景的spritekit游戏。基本上,应用程序的结构是,你打开一个菜单(视图控制器),它通过一个按钮模式将你游戏到游戏(视图控制器)加载GameScene(skscene)。第四次运行我的spritekit场景后,为什么会出现大量滞后?

当您输掉比赛时,您将通过模态赛格发送到屏幕上的游戏(视图控制器):gameVC?.performSegueWithIdentifier("goToGameOver", sender: gameVC)此赛格位于GameScene中,而scene.gameVC = self位于游戏视图控制器中。 gameVC在GameScene中初始化为var gameVC: UIViewController?。在屏幕上的游戏中,您可以返回到菜单,也可以使用按钮初始化模式游程再次玩游戏(返回游戏视图控制器)。

当您进入GameScene四次以上时会出现该问题。 GameScene第五次被打开(无论是从菜单vc还是从游戏结束vc),游戏都非常难以置信。屏幕右下方的fps计数器表示游戏产生1.5 fps。

我认为问题在于GameScene没有被正确解散(每当应用移动到GameScene时,应用的内存使用量都会增加),但我不知道如何正确解除它们。我已经使用

self.removeFromParent() 
self.view?.presentScene(nil) 

为试图右前,右顺着接下去GAMEOVER代码运行后,关闭该GameScene的一种方式,但无济于事。我也想过放松,但我不能放松到一个我还没有去过的视图控制器(游戏结束)。我完全没有想法,这是一个突破性的错误。我真的很感谢一些帮助。非常感谢。

+0

大概是因为什么事也没死,你需要寻找到强有力的保留周期可能发生的事情。在你的类文件中声明'deinit',并在其中放置一个打印语句,以确保它们被调用。 – Knight0fDragon

+0

在我从游戏延伸到游戏结束之前,我执行'self.removeAllChildren()'和'self.removeAllActions()' - 这是否回答了强大的保留周期? – Comrod33

+0

不,完全没有帮助,因为这些应该与父母一起死亡,自我内部的某些东西坚持自我 – Knight0fDragon

回答

0

嘿,我有你有完全相同的问题。我把这行代码放在我的场景的最后,回到我的视图控制器,并且延迟消失了。 !

self.viewController .dismissViewControllerAnimated(真,完成:无)

相关问题