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

问题描述:

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

如果您没有将您的值硬编码到类中,则必须从某个外部源(可能会影响性能 - 取决于您如何以及何时执行此操作)读取它们。就你而言,听起来像你最好的选择是加载信息“前期”(例如,当应用程序启动时)。然后它将一直保留在内存中,直到程序终止。

至于如何存储数据,你可以考虑寻找到核心数据:

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

+0

是啊,我知道我想加载它在外部我的问题是什么是最好的选择。我听说PLIST可以使用更多的资源。没有玩过很多我自己的coredata,但我可以看看。我之前使用过SQLite,会不会是一个可行的解决方案? – Alexander 2010-11-10 04:17:12

+0

是的,SQLite将成为coredata的后盾商店。根据数据的大小和复杂性,数据库可能会过度杀伤。我想如果它足够简单,你可以从文件中读取它: codefinger 2010-11-23 16:04:25

首先,你必须考虑“......硬编码,以防止发生变化...”你有变化的问题是,随着你的应用程序二进制文件的每一个变化,你需要上传一个新的版本sion到应用程序商店(这包括对应用程序包中plist等的更改)。

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

+0

当我说变化时,我在想更多,我不想有无组织的代码,我不得不去寻找硬编码的值来改变。我希望它能够从一个地方以一种干净的方式拉出来,以便我可以在一个中心位置进行更改 – Alexander 2010-11-10 04:16:08