如何更改通过 gameviewcontroller 呈现的第一个 SKscene

How to change the first SKscene that is presented through gameviewcontroller

所以我在我的 swift 项目中创建了几个不同的 SKScenes 并且我在一些教程中看到你不必将 gameScene.swift 作为你的第一个场景启动,但是我找不到解释如何

的教程
import UIKit
import SpriteKit

class GameViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene(fileNamed:"GameScene") {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve 
        rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)
    }
  }
}

我正在尝试将 GameScene SKS 更改为我的 MainMenu SKS,但我不断收到错误,而且我肯定遗漏了一些东西。谁能帮帮我?

随时调用该代码即可。例如,您可以将其与按钮连接。

@IBAction func playGame(sender: AnyObject) {
    if let scene = GameScene(fileNamed:"GameScene") {
        ...
    }
}

这是我在 Sprite Kit 项目中使用的。这是我不久前的事,我不记得背后的任何原因。

if let scene = DesiredScene.unarchiveFromFile("DesiredScene") as? DesiredScene

也许其他人可以阐明发生了什么事

import UIKit
import SpriteKit

class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

if let newScene = MenuScene(fileNamed:"MenuScene") {
    // Configure the view.
    let skView = self.view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true

    /* Sprite Kit applies additional optimizations to improve 
    rendering performance */
    skView.ignoresSiblingOrder = true

    /* Set the scale mode to scale to fit the window */
    newScene.scaleMode = .AspectFill

    skView.presentScene(newScene)
}
}
} 

因此,与其将 GameScene 作为您的初始场景,不如创建 MenuScene 实例并将其呈现在您的 viewDidLoad 中。请注意,由于这一行,您必须创建对应的 MenuScene.sks 文件:

If let newScene = MenuScene(fileNamed:"MenuScene.sks"){ //...}

因为您是从文件加载它。

同样要转换到另一个场景,使用以下模式,例如在 touchesBegan 中创建新场景,可选择创建 SKTransition 并呈现新场景。