0

我正在开发一个 iDevice 游戏,我想将本地玩家的分数存储在设备上。但是,本地播放器可能会发生变化。例如,如果一家人共用一台 iPad,那么他们可能会在玩游戏之前单独登录 GameCenter。为了解决这个问题,我决定将本地分数存储为字典,其中键由本地玩家确定,值是 GKScore 对象的数组。

我的第一个想法是使用 GKLocalPlayer 共享实例作为密钥,但由于它不符合 NSCopying,因此 GKLocalPlayer 不是理想的密钥候选者。我的第二个想法是使用本地播放器的标识符,但 Apple 声明“不要对播放器标识符字符串的内容做出假设。它的格式和长度可能会发生变化。” 当然,我担心如果某天玩家标识符发生神奇变化,玩家可能会失去本地分数。

我的最终想法是使用本地玩家的别名。我已确认未经身份验证的本地播放器的别名字符串等于nil. [NSNull null]在这种情况下用作字典键是否安全?假设本地玩家的别名将保持一致是否安全?

4

1 回答 1

1

唯一能保证永久的播放器是 playerID 字符串。当它说格式和长度可能会发生变化时,那是在尝试解释字符串的上下文的上下文中。AFAIK 并不是某个特定玩家的 ID 可能会改变,而是 Apple 将来可能会使用不同的方案生成 ID,因此您不应依赖具有任何特定格式的字符串或可从该字符串派生的某些信息。

但是,文档非常明确地表明这是正确的方法:

Game Center 上的每个玩家帐户都被永久分配了一个唯一的玩家标识符字符串。您的游戏应使用此字符串来存储每个玩家的信息或消除玩家之间的歧义

于 2013-02-11T00:18:29.027 回答