没有使用GameScene.sks文件

时间:2017-01-09 18:10:32

标签: swift sprite-kit

我正在学习Swift,我从SpriteKit开始。 我试图创建一个简单的游戏,并得到一个关于SpriteKit如何工作的问题。我创建了一个带有开始按钮的新场景(MenuScene),我首先编辑了GameViewController.swift以运行MenuScene。 在MenuScene上,我移动到与GameScene相关联的GameScene.sks。当我运行应用程序时,它会忽略" GameScene.sks并且不显示任何内容。 当我首先编辑GameViewController.swift以运行GameScene时,我可以看到我添加到GameScene的所有内容。为什么会这样?希望我足够清楚,先谢谢!

1 个答案:

答案 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()即可切换场景