2016-07-13 7 views
0

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!

+0

"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

Antwort

1

Das Problem liegt möglicherweise nicht in der Szenenverwaltung, sondern bei Sprites oder bei nicht ordnungsgemäßer Zuordnung der Szene. Nichts von Ihrem Code hier gibt mir genug Informationen, um Ihnen zu sagen, was genau das Problem verursacht.

+0

Du hattest recht, ich habe mir total die falsche Sache angesehen. Es stellt sich heraus, dass ein Wrapper, den ich für einige SKSprites gemacht habe, die Leistungsprobleme verursacht hat, also weiß ich jetzt, was ich beheben muss. Danke, dass du meine Augen geöffnet hast! – Peter

+0

Freut mich, Ihnen zu helfen! –

Verwandte Themen