我想将呈现的初始场景更改为默认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时做错了什么?
答案 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"
}