2016-06-22 16 views
0

In meinem GameViewController habe ich zwei Szenen, eine ist die GameScene und eine andere ist eine Szene (EndScene), auf die geschaltet wird, wenn der Spieler stirbt. Im ersten Code-Block unten ist meine EndScene-Szene, die zu meinem Hauptmenü-Viewcontroller wechseln soll, aber aus irgendeinem Grund nicht. Ich bekomme keine Fehler oder ähnliches, es bleibt nur auf Endscene. Im zweiten Codeblock befindet sich meine GameViewController.swift-Datei. Kann jemand darauf hinweisen, was ich hier falsch mache und was ich tun kann, um es zu beheben?Probleme mit SKScenes und Seguing zu ViewControllern SpriteKit

EndScene.swift

import SpriteKit 

class EndScene : SKScene { 
    var viewController : UIViewController? 
    override func didMoveToView(view: SKView) { 
     self.segue() 

    } 
    func segue() { 
     self.viewController?.performSegueWithIdentifier("gameToMain", sender: viewController) 
    } 
} 

GameViewController.swift

import UIKit 
import SpriteKit 

class GameViewController: UIViewController { 


    override func viewDidLoad() { 
     super.viewDidLoad() 


     if let scene = GameScene(fileNamed:"GameScene") { 
      // Configure the view. 
      let skView = self.view as! SKView 
      skView.showsFPS = true 
      skView.showsNodeCount = true 

      /* Sprite Kit applies additional optimizations to improve rendering performance */ 
      skView.ignoresSiblingOrder = true 

      /* Set the scale mode to scale to fit the window */ 
      scene.scaleMode = .AspectFill 
      scene.viewController = self 
      skView.presentScene(scene) 

     } 
     if let scene = EndScene(fileNamed: "EndScene"){ 
      // Configure the view. 
      let skView = self.view as! SKView 
      skView.showsFPS = true 
      skView.showsNodeCount = true 

      /* Sprite Kit applies additional optimizations to improve 
      rendering performance */ 
      skView.ignoresSiblingOrder = true 

      /* Set the scale mode to scale to fit the window */ 
      scene.scaleMode = .AspectFill 
      scene.viewController = self 
      skView.presentScene(scene) 
     } 
    } 

    override func shouldAutorotate() -> Bool { 
     return true 
    } 

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     if UIDevice.currentDevice().userInterfaceIdiom == .Phone { 
      return .AllButUpsideDown 
     } else { 
      return .All 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Release any cached data, images, etc that aren't in use. 
    } 

    override func prefersStatusBarHidden() -> Bool { 
     return true 
    } 
} 
+0

Possibl e Duplikat von [Präsentiert einen UIViewController von einem SKscene (SpriteKit)] (http://stackoverflow.com/questions/23930592/presenting-a-uiviewcontroller-from-an-kscene-spritekit) –

Antwort

0

versuchen

let newScene: GameScene = GameScene(size: size) 
let transition = SKTransition.fadeWithColor(SKColor.blackColor(), duration: 0.5) 
view?.presentScene(newScene, transition: transition) 

Es gibt andere Übergänge Sie verwenden können, aber diesen Code versuchen und sehen, ob es schaltet Ihre Szenen

+0

die Übergangsform Szene zu Szene ist alles gut, es ist nur der Übergang von der Endszene zu ViewController, die nicht funktioniert –

+0

der UIViewController ist ein Wrapper für Ihre Szenen. Sie können keine Szene verlassen und zum ViewController gehen. Sie können jedoch auf den ViewController und seine Funktionen zugreifen. –

+0

in Ihrem Spiel sollten Sie zwischen den Szenen wechseln. Der gleiche GameViewController präsentiert beide Szenen. Ein typisches Szenario könnte also sein ... Beginne auf einem MenuScene -> Übergang zu GameScene. Spiel spielen. Übergang von GameScene -> zu Endscene. Punkte anzeigen Übergang von EndScene -> zu MenuScene (wenn Spiel vorbei) oder Übergang von EndScene -> zu GameScene (wenn wieder spielen Option) –

Verwandte Themen