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

在游戏中读取和存储数据(iPhone),iphone,Iphone,我目前正在尝试学习游戏编程,所以我从一个简单的iPhone应用程序开始,这样我就可以学习游戏编程的流程和组织。现在,我为玩家的飞船设置了一个名为PlayerShip的类,玩家可以分为不同级别(即当玩家升级飞船时)。因此,对于船舶的每个级别,该类使用不同的图像。对于每一级船舶,我都有恒定值,例如船舶上的转台数量、这些转台的位置、推进器的数量以及这些推进器在船舶上的位置(例如,船舶1级有两个转台和一个推进器)。我的问题是,存储和读取船舶数据的最佳方式是什么?我不想每次启动一艘飞船时都要定义它们,因为

我目前正在尝试学习游戏编程,所以我从一个简单的iPhone应用程序开始,这样我就可以学习游戏编程的流程和组织。现在,我为玩家的飞船设置了一个名为PlayerShip的类,玩家可以分为不同级别(即当玩家升级飞船时)。因此,对于船舶的每个级别,该类使用不同的图像。对于每一级船舶,我都有恒定值,例如船舶上的转台数量、这些转台的位置、推进器的数量以及这些推进器在船舶上的位置(例如,船舶1级有两个转台和一个推进器)。我的问题是,存储和读取船舶数据的最佳方式是什么?我不想每次启动一艘飞船时都要定义它们,因为这看起来没有组织,而且我也不想在发生变化时硬编码。我想用一个PLIST文件来存储所有的值,但我也知道,当读取PLIST时,要么全部读取,要么什么都不读取,这意味着你必须将整个文件读取到内存中,我不想影响游戏的性能。那么,在不影响性能的情况下,存储这些静态信息并使其在代码中可检索的最佳途径是什么呢?

如果您不将您的值硬编码到类中,那么您将不得不从一些外部源读取它们(这可能会影响性能,具体取决于您的方式和时间)。在您的情况下,您的最佳选择似乎是“提前”加载信息(例如应用程序启动时)。然后它将保留在内存中,直到程序终止

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

您特别感兴趣的是如何为您的应用程序提供预加载的数据:


首先你必须考虑“……在更改的情况下……硬编码……”你所面临的问题是,随着应用程序二进制的每一个变化,你需要向应用程序商店上传一个新版本(这包括应用程序包中的PLIST等的更改)。p>
也就是说,当应用程序启动时,您可以选择从web服务器下载具有这些值的plist(或其他文件,如xml等)。在您的情况下,最好在初始化游戏时加载这些值,并将它们保存在内存中。

当我说更改时,我想的更多的是,我不想在必须去的地方有无组织的代码,并搜索硬编码的值以进行更改。我希望它能以一种干净的方式从一个地方拉出来,这样我就可以在一个中心位置进行更改是的,我知道我想从外部加载它,我的问题是什么是最好的选择。我听说PLIST会占用更多的资源。我自己也没怎么玩过coredata,但我可能会看看。我以前使用过SQLite,这是一个可行的解决方案吗?是的,SQLite将成为coredata的后备存储。根据数据的大小和复杂性,DB可能会被过度使用。我想如果它足够简单,您可以从文件中读取它: