如何在转换到Swift 3中的另一个SKView时传递变量?

时间:2017-04-30 19:41:02

标签: ios swift sprite-kit

我是新人,所以忍受我。

我正在使用此代码转换到另一个SKscene:

func moveToGame(game : gameType) {
    let transition:SKTransition = SKTransition.fade(withDuration: 1)
    let scene = SKScene(fileNamed: "GameScene")
    scene?.scaleMode = .aspectFill
    self.view?.presentScene(scene!, transition: transition)
}

游戏类型是游戏的难度,例如,简单,中等,难度。

当我进入下一个场景时,我希望能够访问gameType来决定游戏的播放方式。

我该怎么做?

提前谢谢!

2 个答案:

答案 0 :(得分:2)

我建议使用与每个SKNode关联的userData变量,它比使用UserDefaults的代码少,工作速度快。

func moveToGame(game : gameType) {
    let transition:SKTransition = SKTransition.fade(withDuration: 1)
    guard let scene = SKScene(fileNamed: "GameScene") else {fatalError("Could not find scene")

    scene.scaleMode = .aspectFill
    if(scene.userData == nil) {scene.userData = NSMutableDictionary()}

    scene.userData["myVariable"] = myVariable 
    self.view?.presentScene(scene!, transition: transition)

}

答案 1 :(得分:0)

我建议使用UserDefaults来存储和检索少量数据。这也将允许应用程序中的其他场景按您认为合适的方式访问数据。

Swift 3.1示例

在第一个场景中存储数据:
let store = UserDefaults.standard
store.setValue("hard", forKey: "GameType")

要在下一个场景中检索数据:
let store = UserDefaults.standard
let difficulty = store.value(forKey: "GameType")