如何正确处理切换视图控制器/场景?

时间:2016-07-13 14:58:03

标签: ios iphone swift storyboard

我在Swift 2应用中遇到了场景/视图控制器管理问题。从我的主菜单中,用户可以点击开始玩游戏,效果很好。播放用户时可以选择通过UIButton提前离开,或者应用程序会在丢失时自动将其移回主菜单。

问题出现在几个循环播放,重定向到主菜单等之后。播放时的FPS显着下降,这向我表明了我忽视的某种场景管理效率低下。

主菜单是一个故事板,具有播放状态的segue,由两部分组成。包含基本UI元素的故事板,以及在故事板上呈现SpriteKit元素的SKScene。要返回,每当用户触摸到主菜单按钮时,我都会有一个倒带segue,以及一些自动移回它们的不同代码(包含在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)
}

这是一个复杂的问题,所以如果我的解释有点令人困惑,我会提前道歉。但如果有人能够解释导致性能问题的原因,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:1)

问题可能不在于您的场景管理,而在于精灵或场景未正确解除分配。这里的代码都没有给我足够的信息来告诉你究竟是什么导致了这个问题。