【问题标题】:Saving player's data from iPhone to iPhone将播放器的数据从 iPhone 保存到 iPhone
【发布时间】:2011-03-27 04:20:59
【问题描述】:

我有一个 iPhone 游戏,不知道,玩家有大约 3000 金币。甜蜜。

然后他的 iPhone 发生了一些糟糕的自燃。

玩家得到一部新 iPhone,但从逻辑上讲,游戏会将他重置为 0 金币。 你推荐我用什么方法来保存如此重要的数据?此外,我可能想要存储的数据可能会更大一些(包含重要玩家内容的数组负载)。

谢谢。

【问题讨论】:

  • 如果他的手机自燃,然后那个人出去买了另一部刚刚在他身上爆炸的同款手机,那么也许他应该得到零金。

标签: iphone objective-c ios sqlite core-data


【解决方案1】:

将您需要的信息存储在应用程序的应用程序支持目录中。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *appSupportDirectory = [paths objectAtIndex:0];

您可以将数组写入此目录中的 plist 文件。然后,如果他们选择从损坏的手机的备份中恢复,并且确保在手机燃烧之前同步手机,他们将拿回他们的金币。

请记住,您可以使用从备份恢复功能来获得以前的黄金数量,因此您希望将他们的购买和进度存储在类似的庄园中。

此外,根据您所说的“数组负载”的含义,您可能应该考虑使用核心数据而不是 plist 文件。您的代码将扩展得更好。您可以将数据库存储在同一目录中以获得相同的备份行为。

【讨论】:

  • 包含大约 30000 个元素(小字符串/整数/布尔值)的数组是否被考虑很多?
  • 您应该将 Core Data 用于具有 30,000 个元素的数据结构。但是,这里的重点是存储持久性文件本身的位置。如果您放入应用程序支持目录,它将在用户同步设备时备份。
【解决方案2】:

最近,一些应用尝试提供与 Dropbox 同步数据的选项。必须有一些简单的代码 sn-ps 来做到这一点。您可以选择将保存的游戏数据与 Dropbox 同步。

【讨论】:

  • 但是我会强制每个用户都有一个 Dropbox 帐户或其他什么?因为如果所有玩家都使用一个帐户(我的),这对我不起作用
  • 这取决于规模,你想支持多少玩家。
  • 另外,每个用户都必须同步到他们的数据库帐户。它是可选的,如果他们真的关心他们的保存游戏进度,他们会这样做:)
【解决方案3】:

您可以使用 GameCenter 或 OpenFeint 或两者兼而有之。事实上,大多数开发者都使用这两种方法。

【讨论】:

  • ...等等,不。游戏中心只是排行榜/成就/多人游戏。我找不到任何关于存储我自己的数据的信息。你能指出我正确的方向吗?
  • GameCenter 或 OpenFeint 不用于存储数据或游戏进度。这些用于存储所获得的成就。
  • 这一切都取决于“3000 金币”对您意味着什么。如果不是成就,您应该将其存储在 Keychain 中。钥匙串数据不用于存储大量数据。使用文档目录来存储原始数据。当用户同步他的设备时,这实际上会备份到 iTunes
猜你喜欢
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多