【发布时间】:2012-09-08 06:00:38
【问题描述】:
我正在制作一个游戏,其中每个生物都可以进行 3 次攻击,并且每次攻击可以同时产生多种效果。我正在使用 CoreData 来保存所有数据。
可以通过三个实体看到我的问题的基本示例:
-
Creature:包含与Attack实体的一对多关系 -
Attack:包含与Effect实体的一对多关系 -
Effect:包含效果的详细信息(伤害、迷惑、毒药等)
因此,我需要为每个唯一的 Creature 实体创建三个唯一的 Attack 实体。然后我需要将Effect 实体添加到每次攻击中。我的问题是每个效果可以有不同的价值,但它与所有其他生物的效果基本相同:仍然是“伤害”,但伤害的价值因每个生物而异。
我想到的只有两种方法:
为每个
Attack为每个Creature创建一个唯一的Effect,这样我可以将效果值存储在实体中。这样做的缺点是数据可能会变得很大:3x3x400 = 3,600Effect实体,每个实体仅存在一个关系。为每种类型(损坏、混乱等)创建一个
Effect,并在Attack实体中使用可转换数据类型,我在其中存储了包含每个Effect实体标识符的字典数组(以便它们可以在需要时找到)以及该效果的价值。这可以由NSCoding自动轻松处理,并将Entity对象的数量从 3,600 减少到大约 20。
Effect 和 Attack 实体很少被访问(仅当该生物在战斗中时),我不需要在其中搜索,因此我认为这不会对性能产生明显影响。我还在许多网站上看到他们建议不要在 CoreData 中存储数组和字典。有没有其他方法可以做到这一点?如果没有,什么选择会更好?
PS:抱歉,标题不详,我不知道该放什么。
【问题讨论】: