2016-07-13 11 views
0

Swift 2アプリでシーン/ビューコントローラの管理に問題があります。私のメインメニューから、ユーザーはタップしてゲームを始めることができます。これは素晴らしいことです。ユーザーの再生中にUIButtonを使用して途中で終了するか、または失ったときに自動的にメインメニューに戻ります。ビューコントローラ/シーンの切り替えを正しく処理する方法は?

問題は数回の再生、メインメニューへのリダイレクトなどの後に発生します。演奏中のFPSは大幅に低下します。これは、私が見落としているシーン管理の非効率性を示しています。

メインメニューは、2つの部分で構成されている再生状態のセグがあるストーリーボードです。基本的なUI要素を含むストーリーボードと、SpriteKit要素をストーリーボードの上にレンダリングするSKScene。戻るには、私はそう(SKScene内に含まれる)として、ユーザがメインメニューボタンに戻って、自動的にそれらを移動するための、いくつかの異なるコードに触れるたびための巻き戻しセグエを持っている:

func goHome() 
{    
    self.viewController?.dismissViewControllerAnimated(true, completion: nil) 

    self.removeAllChildren() 
    self.removeFromParent() 
} 

ときにプレーをメインメニューのボタンをタップする、私はPlayViewControllerにつながるセグエを持っている、と私は)(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

喜んで助けてください! –

関連する問題