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