Swift 如何转移用户';斯威夫特和斯皮特基特中的另一个场景是什么?

Swift 如何转移用户';斯威夫特和斯皮特基特中的另一个场景是什么?,swift,sprite-kit,Swift,Sprite Kit,我有三个场景,一个主菜单场景,一个游戏场景和一个游戏结束场景。用户在游戏场景中获得分数,我想把分数转移到游戏场景中。我该怎么做?(如果您需要我的代码或更多信息,请询问!)您可以使用类作为最简单的解决方案 在游戏场景中,您将分数设置为永久存储 let defaults = NSUserDefaults.standardUserDefaults() defaults.setInteger(score, forKey: "scoreKey") defaults.synchronize() 稍后在G

我有三个场景,一个主菜单场景,一个游戏场景和一个游戏结束场景。用户在游戏场景中获得分数,我想把分数转移到游戏场景中。我该怎么做?(如果您需要我的代码或更多信息,请询问!)

您可以使用类作为最简单的解决方案

在游戏场景中,您将分数设置为永久存储

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(score, forKey: "scoreKey")

defaults.synchronize()
稍后在GameOver场景中,您将阅读如下持久存储:

let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
 newScene.userData?.setValue(score, forKey: "scoreKey")
let score = Global.score;
关于同步()方法(来自文档):

因为此方法会定期自动调用, 仅当无法等待自动启动时,才使用此方法 同步(例如,如果应用程序即将退出)或 如果您想更新用户默认磁盘上的内容,即使 您没有做任何更改

或者我猜你可以在GameOver场景中创建一个公共属性(分数),当转换时,用当前分数设置该属性(来自游戏场景)

类似地,可以将值设置为每个节点都具有的属性,如下所示:

let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
 newScene.userData?.setValue(score, forKey: "scoreKey")
let score = Global.score;
编辑:

如果您对持久性感兴趣(在应用程序启动之间提供一个值),NSUserDefaults将是首选方法。否则,您可以使用userData或KnightOfDragon在其示例中指出的结构。

您可以使用类作为最简单的解决方案

在游戏场景中,您将分数设置为永久存储

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(score, forKey: "scoreKey")

defaults.synchronize()
稍后在GameOver场景中,您将阅读如下持久存储:

let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
 newScene.userData?.setValue(score, forKey: "scoreKey")
let score = Global.score;
关于同步()方法(来自文档):

因为此方法会定期自动调用, 仅当无法等待自动启动时,才使用此方法 同步(例如,如果应用程序即将退出)或 如果您想更新用户默认磁盘上的内容,即使 您没有做任何更改

或者我猜你可以在GameOver场景中创建一个公共属性(分数),当转换时,用当前分数设置该属性(来自游戏场景)

类似地,可以将值设置为每个节点都具有的属性,如下所示:

let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
 newScene.userData?.setValue(score, forKey: "scoreKey")
let score = Global.score;
编辑:


如果您对持久性感兴趣(在应用程序启动之间提供一个值),NSUserDefaults将是首选方法。否则,您可以使用userData或KnightOfDragon在其示例中指出的类似结构。

NSUserDefaults的替代方法是创建一个包含所有全局数据的结构

struct GlobalData
{
  static var gold = 0;
  static var coins = 0;
  static var lives = 0;
}
那么你就这样使用它:

let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
 newScene.userData?.setValue(score, forKey: "scoreKey")
let score = Global.score;


NSUserDefaults的另一种选择是创建一个包含所有全局数据的结构

struct GlobalData
{
  static var gold = 0;
  static var coins = 0;
  static var lives = 0;
}
那么你就这样使用它:

let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
 newScene.userData?.setValue(score, forKey: "scoreKey")
let score = Global.score;


@JoshSchalbach展示你迄今为止所做的尝试总是一个好主意:)大多数反对票来自于这样一个事实,即问题缺乏必要的信息,或者当原始海报要求完整的解决方案时,甚至没有试图自己解决某个问题:)@JoshSchalbach展示你所做的尝试总是一个好主意far:)大多数的反对票来自这样一个事实,即问题缺乏所需的信息,或者当原始海报要求完整的解决方案时,甚至没有试图自己解决问题:)非常感谢。这是我在比赛中做的最后一件事!现在上传到appstore:)非常感谢。这是我在比赛中做的最后一件事!现在开始上传到appstore:)