如何在SpriteKit中重新加载GameScene

时间:2017-03-22 10:22:34

标签: ios swift sprite-kit

我有一个简单的游戏,当时间到了,游戏结束了。我有一个重启按钮,目前只是重新加载GameScene但由于某种原因我的节点出现在屏幕左侧的中间位置的一半。我仍然可以使用屏幕的整个空间来玩游戏。

下面的图片展示了游戏在工作,结束游戏状态以及重新加载GameScene后的效果。

我不确定如何解决此问题或提供的代码。

这是我重新加载GameScene的功能:

func goToGameScene(){
    let gameScene:GameScene = GameScene(size: self.view!.bounds.size) 
    let transition = SKTransition.fade(withDuration: 1.0)
    gameScene.scaleMode = SKSceneScaleMode.fill
    self.view!.presentScene(gameScene, transition: transition)
}

What the game should look like

End Game

After reloading the GameScene

1 个答案:

答案 0 :(得分:2)

替换:

gameScene.scaleMode = SKSceneScaleMode.fill    

使用:

gameScene.scaleMode = .aspectFit

或者:

gameScene.scaleMode = .aspectFill  

您也可以完全复制GameViewController代码,以便得到类似的内容:

if let view = self.view {
            // Load the SKScene from 'GameScene.sks'
            if let scene = SKScene(fileNamed: "GameScene") {
                // Set the scale mode to scale to fit the window
                scene.scaleMode = .aspectFit

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

            view.ignoresSiblingOrder = true

            view.showsFPS = true
            view.showsNodeCount = true
        }

只需将代码放在要重新加载场景的位置即可。