我正在学习 Swift,我从 SpriteKit 开始。我正在尝试创建一个简单的游戏,并收到了有关SpriteKit如何工作的问题。我用开始按钮制作了一个新场景(MenuScene),我编辑了GameViewController.swift
以首先运行MenuScene
。在MenuScene
,我正在移动到与GameScene.sks
相关的GameScene
。当我运行应用程序时,它会"忽略"GameScene.sks
并且不显示那里的任何内容。当我编辑GameViewController.swift
以首先运行GameScene
时,我可以看到我添加到GameScene中的所有内容。为什么会这样?希望我足够清楚,提前感谢!
不是您正在寻找的确切答案,但它会起作用(除非我误解了您的问题)。我通常倾向于发现从其.swift文件加载场景比从.sks文件(我根本不使用)加载场景更好。一个简单的方法是:
func loadGameScene() {
let scene = GameScene(size: view.bounds.size)
scene.scaleMode = .resizeFill
let transitionType = SKTransition.flipHorizontal(withDuration: 1.0)
let skView1 = view as! SKView
skView1.ignoresSiblingOrder = true
skView1.presentScene(scene,transition: transitionType)
}
您可以将此函数放入 GameViewController 中,并在单击该按钮时从 GameViewController 调用它。如果您确实想使用.sks文件,只需编辑此函数即可使用.sks。
如果你不知道如何从另一个SKScene类(MenuScene)调用该函数,这是你这样做的:
在场景中,创建一个变量viewController
如下所示:
class MenuScene: SKScene{
var viewController: GameViewController!
这将指向您的游戏视图控制器。现在,在您的 GameViewController 中,在呈现 MenuScene 后,添加:
scene.viewController = self
现在,在 MenuScene 中,您只需调用viewController.loadGameScene()
即可切换场景