2016-07-13 43 views
0

我在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) 
} 

這是一個有點複雜的問題,所以我在道歉如果我的解釋有點混亂,請提前。但是,如果有人能夠指出導致性能問題的原因,那將是驚人的。

謝謝!

+0

「這個問題發生在玩了幾個週期後,重定向到主菜單,等等」 - 聽起來更像是一個內存泄漏給我。 Swift會自動執行很多操作,但是您的繪圖代碼中可能存在某些內容? – bradkratky

回答

1

問題可能不在於您的場景管理,而是精靈或場景未正確釋放。您的代碼在這裏沒有給我足夠的信息來告訴您究竟是什麼導致了問題。

+0

你說得對,我看完全是錯誤的。事實證明,我爲一些SKSprites製作的包裝器導致了性能問題,所以現在我知道我需要修復的問題。謝謝你打開我的眼睛! – Peter

+0

很高興幫助! –