2015-04-03 53 views
2

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

我的目标是让这些数据通过应用程序更新持续存在并且不易被用户编辑。有没有什么好的解决方案?

+1

您可以使用SQLite数据库为。这将是一个很好的解决方案,您可以使用云存储这个问题 – 2015-04-03 06:06:57

+1

,例如。使用Parse api set,当网络不可用时它也支持本地数据存储。 – nzs 2015-04-03 08:04:31

+2

存储游戏进度的不同方式:http://stackoverflow.com/questions/27566483/storing-game-preferences-and-saved-games-in-a-secure-format – Whirlwind 2015-04-03 11:22:50

回答

2

NSUserDefaults实际上是一种非常好的方式来存储这样的数据。毕竟你只是在谈论存储BOOL值。除非用户删除应用程序,否则NSUserDefaults在应用程序更新期间不会重置或删除。这在iPhone iOS Programming Guide,保存的文件规定更新(第114页)在:

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

由于Whirlwind已经评论过,存储数据的方法很多。以下是处理各种存储方法的前一个question的链接。