如何保存对象(保存/加载游戏)

Posted

技术标签:

【中文标题】如何保存对象(保存/加载游戏)【英文标题】:How to save objects (save/load a game) 【发布时间】:2012-10-14 09:54:59 【问题描述】:

我目前正在寻找一种在我正在开发的 Iphone 应用程序中保存对象的方法。由于该游戏涉及清除“关卡”,因此我希望能够在某处存储一个数组以指示已完成哪些关卡。但是,这必须与游戏无关,因为退出游戏一定不会导致数据丢失。我该怎么做?

【问题讨论】:

检查链接。希望对你有帮助)***.com/questions/2206013/… 【参考方案1】:

保存还原对象的最简单方法是 NsUserdefaults。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSString
[prefs setObject:@"TextToSave" forKey:@"keyToLookupString"];

// saving an NSInteger
[prefs setInteger:42 forKey:@"integerKey"];

// saving a Double
[prefs setDouble:3.1415 forKey:@"doubleKey"];

// saving a Float
[prefs setFloat:1.2345678 forKey:@"floatKey"];

[prefs synchronize];

用于检索

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSString
NSString *myString = [prefs stringForKey:@"keyToLookupString"];

// getting an NSInteger
NSInteger myInt = [prefs integerForKey:@"integerKey"];

// getting an Float
float myFloat = [prefs floatForKey:@"floatKey"];

对于其他类型的对象

[prefs objectForKey:@"anyObjectKey"];

【讨论】:

非常有帮助,我一定会试试这个。谢谢! 不要忘记[prefs synchronize];写入用户默认值后。否则,您将无法保存它们。 我一定会记住的。 一般不需要手动调用synchronize。请参阅synchronize 的讨论“因为此方法会定期自动调用,因此仅当您无法等待自动同步(例如,如果您的应用程序即将退出)或您想要更新用户时才使用此方法即使您没有进行任何更改,也默认为磁盘上的内容。"【参考方案2】:

小块数据

使用NSUserDefaults。例如,您还可以使用https://github.com/MugunthKumar/MKiCloudSync 将NSUserDefaults 同步到iCloud。因此,即使用户再次删除并安装您的应用程序,进度也会被保存,...

大量数据

例如使用CoreDatasqlite

【讨论】:

非常感谢,NSUserDefaults 看起来非常适合这样的小任务! :)

以上是关于如何保存对象(保存/加载游戏)的主要内容,如果未能解决你的问题,请参考以下文章

如何在pygame中保存/加载游戏功能?

保存游戏状态 Android

在泡菜文件中保存和加载多个对象?

如何从谷歌玩游戏中选择和加载保存的游戏快照

尝试使用 localStorage 在 JavaScript 中保存和加载带有对象的数组时出错

应用程序进入/离开后台时保存和加载数据