【问题标题】:Saving locked and unlocked game levels in spritekit在 spritekit 中保存锁定和解锁的游戏关卡
【发布时间】:2015-06-08 05:42:49
【问题描述】:

在我的 spritekit 应用程序中,我有包含 30 个级别的章节。所有级别最初都被锁定。一旦赢得一个级别,下一个级别将被解锁。 NSUserDefaults 似乎不是一个理想的选择。我试图将我的数据保存在“应用程序支持”文件夹中的 plist 文件中,方法是为每个级别包设置一个数组和一个对应于每个级别的值(1 或 0,取决于级别的状态)。这似乎也不理想,因为它可以被编辑,并且可以通过更新重置。

我的目标是让这些数据通过应用更新持续存在,并且不会被用户轻易编辑。有什么好的解决办法吗?

【问题讨论】:

  • 你可以使用 sqlite 数据库。这将是解决这个问题的好方法
  • 您也可以使用云保存,例如。带有 Parse api 集,当网络不可用时,它也支持本地数据存储。
  • 存储游戏进度的不同方式:stackoverflow.com/questions/27566483/…

标签: ios objective-c swift ios7 sprite-kit


【解决方案1】:

您可以序列化您的属性列表并将其作为数据存储到 NSUserDefaults 中。您也可以在存储之前对其进行加密,以确保任何人都无法以任何方式对其进行修改。

用于 plist 序列化的 Apple Docs https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/PropertyLists/SerializePlist/SerializePlist.html

【讨论】:

    【解决方案2】:

    NSUserDefaults 实际上是一种非常好的存储数据的方法。毕竟,您只是在谈论存储 BOOL 值。 NSUserDefaults 在应用更新期间不会重置或删除,除非用户删除应用。这在iPhone iOS Programming Guide,更新期间保存的文件(第 114 页)中有说明:

    当用户下载应用更新时,iTunes 会在新的应用目录中安装更新。然后它将用户的数据文件从旧安装移动到新的应用程序目录,然后再删除旧安装。

    正如 Whirlwind 已经评论的那样,有很多方法可以存储数据。这是以前的question 处理各种存储方法的链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多