从GameScene到viewController Swift 3

我需要从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’”。 我该怎么做才能解决这个问题?

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

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

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