从GameScene到主菜单执行segue

时间:2015-08-23 00:19:50

标签: ios swift sprite-kit segue

您好我尝试在GameScene中的游戏中点击标签返回mainMenu时执行segue,在情节提要中创建MainMenu并且有一个segue集从GameScene到名为MainMenu的{​​{1}}。我目前必须完成的代码是:

在GameSceneViewController中,我的代码是

gameToMain

在我的GameScene中我添加了

class GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    let scene = GameScene(size: view.bounds.size)
    let skView = view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = false
    scene.scaleMode = .AspectFill
    skView.presentScene(GameScene(size: skView.bounds.size))

    scene.viewController = self
}

var viewController: UIViewController?

我在解包Optional值时收到错误func segue(){ self.viewController!.performSegueWithIdentifier("gameToMain", sender: viewController) }

我认为问题是发件人,我已经设置了fatal error: unexpectedly found nil,但我不确定如何解决问题。谢谢!

1 个答案:

答案 0 :(得分:0)

问题似乎是您没有设置viewController,因为您将此视为错误...

fatal error: unexpectedly found nil

创建GameScene时我猜你没有正确设置viewController变量。用你提供的有限代码很难确定,但我会首先看一下。如果不是问题,我会更新你关于如何创建gameScene以及何时创建的问题。

你也可以在调用segue之前注销视图控制器,只是为了验证它是否为零。

修改

获得其他代码后,我相信您的问题就在这里......

skView.presentScene(GameScene(size: skView.bounds.size))

您正在创建一个全新的场景,而不是使用您在上面创建的场景。应该是这个......

skView.presentScene(scene)

此外,如果你想回到之前的viewController,你不会在这个例子中调用一个segue,就像这样......

viewController.dismissViewControllerAnimated(true, completion: nil)

希望这有帮助。