我正在学习Swift,我从SpriteKit开始。
我试图创建一个简单的游戏,并得到一个关于SpriteKit如何工作的问题。我创建了一个带有开始按钮的新场景(MenuScene),我首先编辑了GameViewController.swift
以运行MenuScene
。
在MenuScene
上,我移动到与GameScene
相关联的GameScene.sks
。当我运行应用程序时,它会忽略" GameScene.sks
并且不显示任何内容。
当我首先编辑GameViewController.swift
以运行GameScene
时,我可以看到我添加到GameScene的所有内容。为什么会这样?希望我足够清楚,先谢谢!
答案 0 :(得分:0)
可能不是您正在寻找的确切答案,但它会起作用(除非我误解了您的问题)。我通常倾向于发现从.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。现在在GameViewController中,在呈现MenuScene之后,添加:
scene.viewController = self
现在,在您的MenuScene中,您只需拨打viewController.loadGameScene()
即可切换场景