你如何存储GameScene所以我可以从InGame菜单转换回它?

时间:2017-09-28 02:10:09

标签: swift sprite-kit

Hello其他程序员。这是场景。用户可以在游戏期间访问InGameMenuScene,以允许他们访问设置等。 InGameMenuScene上的其中一个按钮BackToGame可以带您回到最初使用的GameScene。我需要帮助找出如何存储GameScene,然后在单击BackToGame按钮时访问存储的GameScene。我尝试将其存储在UserDefaults中,但我在InGameMenu中再次访问它时遇到了问题。

目前GameScene:

func menuButtonPressed(){
let savedScene = BInNYGameScene.self
let userDefaults = UserDefaults.standard
    userDefaults.set(savedScene, forKey: "CurrentScene")
    userDefaults.set(count, forKey: "CurrentCount")
    userDefaults.set(hitCount, forKey: "CurrentHitCount")
    userDefaults.synchronize()
}

InGameMenuScene:

 func backToGame(){
    let userDefaults = UserDefaults.standard
    let backToGameScene = userDefaults.object(forKey: "CurrentScene") as! SKScene
    let nextScene = backToGameScene(size: scene!.size)
    nextScene.scaleMode = .aspectFill
    scene?.view?.presentScene(nextScene, transition: transition)

}

如果有更好的方法存储GameScene并检索GameScene,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

在转换到MenuScene之前,只需跟踪它即可

目前GameScene:

func toMenu(){
    let menu = MenuScene(...)
    menu.previousScene = self
    scene?.view?.presentScene(self, transition: transition)

}

InGameMenuScene:

 weak var previousScene : SKScene?
 func backToGame(){
    guard let previousScene = previousScene else{fatalError("No previous scene provided")}
    scene?.view?.presentScene(previousScene, transition: transition)

}