【发布时间】:2016-11-16 06:02:02
【问题描述】:
我的 Swift 2 应用程序中的场景/视图控制器管理存在问题。在我的主菜单中,用户可以点击开始玩游戏,效果很好。在玩游戏时,用户可以选择通过 UIButton 提前离开,或者当他们输掉时,应用程序会自动将他们移回主菜单。
在播放、重定向到主菜单等几个循环后出现问题。玩游戏时 FPS 显着下降,这表明我忽略了某种场景管理效率低下。
主菜单是一个故事板,与播放状态有一个segue,由2部分组成。包含基本 UI 元素的情节提要,以及在情节提要顶部呈现 SpriteKit 元素的 SKScene。要返回,每当用户触摸返回到主菜单按钮时,我都有一个倒带转场,以及一些用于自动将它们移回的不同代码,因此(包含在 SKScene 中):
func goHome()
{
self.viewController?.dismissViewControllerAnimated(true, completion: nil)
self.removeAllChildren()
self.removeFromParent()
}
当点击主菜单中的播放按钮时,我有一个通向 PlayViewController 的 segue,我在 PlayViewController 的 viewDidLoad() 中有以下内容:
override func viewDidLoad()
{
super.viewDidLoad()
scene = GameScene(size: view.bounds.size, controller: self)
skView = view as! SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.showsFPS = true
skView.showsNodeCount = true
skView.presentScene(scene)
}
这是一个有点复杂的问题,所以如果我的解释有点混乱,我提前道歉。但是,如果有人能阐明导致性能问题的原因,那就太棒了。
谢谢!
【问题讨论】:
-
“这个问题是在播放、重定向到主菜单等几个循环后出现的”——对我来说听起来更像是内存泄漏。 Swift 会自动执行很多操作,但您的绘图代码中可能有一些东西?
标签: ios iphone swift storyboard