在游戏中读取和存储数据(iPhone)

时间:2010-11-10 03:13:26

标签: iphone

我目前正在尝试学习游戏编程,所以我从一个简单的iPhone应用程序开始,这样我就可以学习游戏编程的流程和组织。现在,我有一个名为PlayerShip的玩家船只类别,玩家船只可以进入不同级别(即当玩家升级他们的船只时)。因此,对于每个级别的船舶,该类使用不同的图像。对于每个级别的船,我都有恒定的值,例如船上炮塔的数量,炮塔的位置,推进器的数量和船上推进器的位置(例如,船级1有两个炮塔和一个推进器)。我的问题是,为船舶存储和读取这些数据的最佳方法是什么?我不想每次启动一艘船时都要定义它们,因为它似乎没有组织,我也不想在发生变化时对其进行硬编码。我正在考虑使用PLIST文件存储所有值,但我也知道,当读取PLIST时,它是全有或全无意义的,你必须将整个文件读入内存,我不希望它能够达到游戏的性能。那么,存储这些静态信息并使其在代码中可检索的最佳途径是什么,而不必冒险性能?

2 个答案:

答案 0 :(得分:1)

如果你没有硬编码你的价值观,那么你将不得不从一些外部来源读取它们(这可能会影响性能 - 取决于你如何以及何时这样做)。在您的情况下,听起来您最好的选择是“预先”加载信息(例如应用程序启动时)。然后它将保留在内存中,直到程序终止。

至于如何存储数据,您可以考虑查看核心数据:

http://developer.apple.com/library/ios/ipad/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html

您特别感兴趣的是如何使用预加载的数据发送应用程序:

http://www.raywenderlich.com/980/core-data-tutorial-how-to-preloadimport-existing-data

答案 1 :(得分:0)

首先,你必须考虑“...在发生变化时硬代码......”你所遇到的更改问题是,你的app二进制文件的每次更改都需要将新版本上传到app store(这包括应用程序包中plist等的更改)。

据说,您可以选择在应用启动时从Web服务器下载带有这些值的plist(或其他文件,即xml等)。在您的情况下,最好在初始化游戏时加载这些值并将其保留在内存中。