从 GameScene 转到 viewController Swift 3

Posted

技术标签:

【中文标题】从 GameScene 转到 viewController Swift 3【英文标题】:Segue from GameScene to a viewController Swift 3 【发布时间】:2016-10-29 22:05:52 【问题描述】:

我需要从 GameScene 到 UIViewController 进行转场。到目前为止,我的代码如下:

在我添加的 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】:

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

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

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

【讨论】:

出于好奇。什么是退出转场? 您可以在此 SO answer 中阅读有关退出序列的信息

以上是关于从 GameScene 转到 viewController Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

您如何存储 GameScene 以便我可以从 InGame 菜单转换回它?

从 GameViewController 访问按钮、标签和 uiimageviews 到 GameScene

从 AppDelegate 调用 GameScene 方法(Swift 3、SpriteKit、Xcode 8)

在 GameScene 和 ViewController Swift 之间移动

无法将孩子添加到 GameScene,只能添加到 SKSpriteNode

当我从 GameScene 切换到新场景时,出现灰屏并且我的代码无法运行