在Swift中更改初始游戏场景

时间:2017-06-02 13:03:00

标签: swift sprite-kit

我想将呈现的初始场景更改为默认GameScene类以外的其他类。从阅读其他问题,我知道我必须从GameViewController更改此部分:

       if let scene = SKScene(fileNamed: "GameScene") {
            print(scene)
            // Set the scale mode to scale to fit the window
            scene.scaleMode = .aspectFill

            // Present the scene
            view.presentScene(scene)
        }

所以在GameScene.swift文件中我创建了一个新类:

class MainMenu : SKScene {
   override func didMove(to view: SKView) {
      print("At least it ran")
      self.scene?.view?.presentScene(GameScene())
   }
}

但是,当我将场景更改为:

if let scene = SKScene(fileNamed: "MainMenu")

当我运行该项目时,它会卡住,但是当我用字符串“GameScene”运行它时,它运行得很好。我在加载MainMenu时做错了什么?

1 个答案:

答案 0 :(得分:1)

在我看来,你应该把你的场景分成他们自己的文件......

您是否有适用于MenuScene的SKS文件?如果您尝试使用fileNamed:

加载它,则需要创建一个
  • 或 -

使用此代码加载仅在代码中创建而不在场景编辑器中创建的SKScene文件

if let skView = self.view as? SKView {

    if skView.scene == nil {

        let scene = MenuScene(size: skView.bounds.size)        
        scene.scaleMode = .aspectFill
        skView.presentScene(scene)
    }
}

然后在你的MenuScene文件中你需要一个init func

init(size: CGSize) {

    super.init(size: size)

    name = "menuScene"
}