在我的游戏中,我为每个级别设置了一组点,称为“积分”,“积分1”和“积分2”
例如在第1级我有这些要点:
等级1:
Poitns:(0.3,0.04),(0.2,0.25),(1.5,0.5),(0.2,0.5),(0.3,0.04)
Poitns1:(0.5,0.04),(0.6,0.35),(0.5,0.5),(0.2,0.5),(0.3,0.04),(0.2,0.04)
Poitns2:(0.3,0.04),(0.6,0.34),(0.5,0.5),(0.2,0.5),(0.3,0.04),(0.3,0.04)
等级2:......
等级3:......
我的游戏中有大约90个关卡,每个都有自己的数据,
问题是,我如何将数据保存到DataBase?
一个选项是为每个,Point1.x,Point1.y,Point2.x和......创建一个表。
这将是一个大型数据库,有6个表。
另一个选项是将表中的所有Point1数据的数据保存为String,并通过解析拉出浮点数(例如,为points.x保存0.3,0.2,1.5,0.2,0.3,0.04然后解析数据对于每一行并检查它何时到达“,”......) 但对于Android来说,这是一项非常繁重的操作。
什么是最好的选择?除了数据库之外还有其他方法吗?
如果不是,我应该如何保存这些数据以使用更少的内存进行计算和到达数据?
答案 0 :(得分:1)
我认为你可以使用SQLite db来做到这一点。它是保存和处理文本的好工具。我不熟悉其他数据库,但如果您使用SQLite数据库,我可以告诉您如何解决这个问题。希望其他人能够回答和讲述替代数据库,以便您将它们全部进行比较。
正如您所说,您可以将一个Point的所有浮点数存储在单个字符串中。然后只创建一个表来存储所有数据。它看起来像这样。
_id | Points | Level 1 | Level 2 | Level 3 | ... | Level 90
----------------------------------------------------------------------
1 | Point1 | "0.3,..." | "0.4,..." | "0.3,..." | ... | "0,6,..."
2 | Point2 | "0.2,..." | null | "0.1,..." | ... | null
3 | Point3 | "0.3,..." | "0.5,..." | "0.4,..." | ... | "0.2,..."
...
...
按null
我指的是特定点不适用的等级。或者你可以改为编写空字符串""
。 _id
是PRIMARY KEY AUTOINCREMENT列,用于管理新Point行的自动插入(不会影响您的数据)。
这个想法是,通过这种方式,您可以拥有任意数量的行和固定数量的列(在本例中为90)。但是,表格可能还有其他更好或类似的解决方案。
考虑到现代处理器(1-2GHz /核心)的速度,您可以在一秒钟内完成高达十亿次操作。将此数字与字符串元素的大小进行比较。我确信你的Points字符串不会太长,以便在从db中提取时获得处理它的大量时间。因此,您无需担心速度。您甚至可以在后台启动此流程,以免影响您的用户界面。
<强>缺点:强>
通过在SQLiteOpenHelper内部onCreate
内部对所有列进行硬编码来创建90列并不容易。但这只是一次性工作。
这就是我的解决方案。希望它能以某种方式帮助你。我也很想知道其他可以帮助解决这个问题的数据库,如果可能的话。