ios - 执行从 GameScene 到主菜单的 Segue

标签 ios swift sprite-kit segue

您好,当从 GameScene 中的游戏中单击标签返回到 mainMenu 时,我正在尝试执行转场,MainMenu 是在 Storyboard 中创建,并且从 GameScene 到 MainMenu 的 Segue 设置为 gameToMain。我目前必须完成此任务的代码是:

在 GameSceneViewController 中我的代码是

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
}

并在我的 GameScene 中添加

var viewController: UIViewController?

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

我在解包可选值时收到错误 fatal error :意外发现 nil

我相信问题出在发件人身上,我已经设置了一个 mainMenuViewController 但我不确定如何解决该问题。谢谢!

最佳答案

问题似乎是您没有设置 viewController 因为您收到此错误...

fatal error :意外发现 nil

当您创建 GameScene 时,我猜测您没有正确设置 viewController 变量。由于您提供的代码有限,很难确定,但我会先看看那里。如果这不是问题,我会更新您关于如何创建游戏场景以及何时创建的问题。

您还可以在调用 segue 之前注销 View Controller ,以验证它是否为 nil。

编辑

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

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

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

skView.presentScene(scene)

此外,如果您想返回到之前的 viewController,则在此示例中您不会调用 segue,它会是这样的..

viewController.dismissViewControllerAnimated(true, completion: nil)

希望有帮助。

关于ios - 执行从 GameScene 到主菜单的 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162014/

相关文章:

ios - [tableview reloadData] 未调用 numberofSections 方法

swift - 具有泛型类型的可观察扩展

ios - 确定纬度/经度点是否在 Mapview 中的 MKPolygon 中?

ios - 我怎样才能得到真正的 'self' ,哪个节点运行 SKaction 序列

ios - SKScene:场景的界限

ios - cordova cli 命令在 ios 上失败 : ENOENT cordova-config. json.SOME_NUMBER

iphone - _myObject 与 self.myObject

ios swift - 将uiimage存储在文档目录和核心数据中的路径

与 .some/.none 匹配的 Swift 切换模式

ios - Apple Watch 上的 SpriteKit - 如何呈现场景?