我在Swift 2應用程序中遇到了場景/視圖控制器管理問題。從我的主菜單,用戶可以點擊開始玩遊戲,這很好。雖然玩用戶可以選擇通過UIButton過早離開,或者應用程序會在失去時自動將其移回主菜單。如何正確處理切換視圖控制器/場景?
問題出現在幾個週期的播放,重定向到主菜單等等。遊戲時的FPS顯着下降,這表明我忽視了某種場景管理效率低下的情況。
主菜單是一個由玩家狀態組成的故事板,由兩部分組成。包含基本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)
}
這是一個有點複雜的問題,所以我在道歉如果我的解釋有點混亂,請提前。但是,如果有人能夠指出導致性能問題的原因,那將是驚人的。
謝謝!
「這個問題發生在玩了幾個週期後,重定向到主菜單,等等」 - 聽起來更像是一個內存泄漏給我。 Swift會自動執行很多操作,但是您的繪圖代碼中可能存在某些內容? – bradkratky