Ich habe ein Problem mit der Verwaltung von Szenen/View-Controllern in meiner Swift 2-App. Von meinem Hauptmenü aus kann der Benutzer tippen, um mit dem Spiel zu beginnen, was großartig funktioniert. Während des Spielens hat der Benutzer die Wahl, vorzeitig über eine UIButton zu gehen, oder die App wird sie automatisch zurück ins Hauptmenü bewegen, wenn sie verlieren.Wie können Controller/Szenen mit wechselnden Ansichten richtig gehandhabt werden?
Das Problem tritt nach ein paar Spielzyklen, umleiten zum Hauptmenü, und so weiter. Der FPS beim Spielen fällt deutlich ab, was auf eine Art von Ineffizienz hindeutet, die ich übersehen habe.
Das Hauptmenü ist ein Storyboard mit einem Übergang zum Spielstatus, der aus 2 Teilen besteht. Das Storyboard mit den grundlegenden UI-Elementen und eine SKScene, die SpriteKit-Elemente oben auf dem Storyboard darstellt. Zurück zu gehen, habe ich einen Rücklauf segue für, wenn der Benutzer die zurück zur Hauptmenütaste, und einige anderen Codes für sie automatisch zurück bewegt, wie so (im SKScene enthält):
func goHome()
{
self.viewController?.dismissViewControllerAnimated(true, completion: nil)
self.removeAllChildren()
self.removeFromParent()
}
Wenn das Spiel Taste im Hauptmenü wird angezapft, ich segue haben, die der PlayViewController führt, und ich habe in der PlayViewController des viewDidLoad folgende():
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)
}
Dies ist ein bisschen ein kompliziertes Thema ist, so entschuldige ich mich in Fortschritt, wenn meine Erklärung ein bisschen verwirrend war. Aber wenn jemand etwas Licht auf das werfen könnte, was die Leistungsprobleme verursacht, wäre das erstaunlich.
Danke!
"Das Problem tritt nach ein paar Spielzyklen, umleiten zum Hauptmenü, und so weiter" - klingt eher wie ein Speicherleck für mich. Swift macht viel automatisch, aber vielleicht gibt es etwas in Ihrem Zeichnungscode? – bradkratky