从GameScene看到一个viewController Swift 3

时间:2016-10-29 22:05:52

标签: ios swift uiviewcontroller sprite-kit swift3

我需要从GameScene到UIViewController制作一个segue。到目前为止,我的代码如下:

在GameViewController.swift中我添加了:

if let view = self.view as! SKView? {
        if let scene = SKScene(fileNamed: "GameScene") {
            scene.scaleMode = .aspectFill

            scene.viewController = self
            view.presentScene(scene) 
        }
         ...

并在我的GameScene.swift中添加了

class GameScene: SKScene, SKPhysicsContactDelegate {
    var viewController: UIViewController?

    ...

以及

func returnToMainMenu(){

    self.viewController.performSegueWithIdentifier("push", sender: viewController)

}

所以我的问题是,当我说 - scene.viewController = self - 我得到一个错误,上面写着“类型'SKScene'的值没有成员'viewController'”。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

问题是viewController属性是在GameScene中声明的,但是在创建场景时它的类型为SKScene。修复它的简单方法是将场景初始化为GameScene,然后您就可以访问GameScene中声明的成员。

if let scene = GameScene(fileNamed: "GameScene") {
    // Other code
    scene.viewController = self
}

此外,您应该在返回主菜单时尝试退出序列,但那是另一个主题。