我正在制作一个游戏,其中每个生物都可以进行 3 次攻击,并且每次攻击可以同时产生多种效果。我正在使用 CoreData 来保存所有数据。
可以通过三个实体看到我的问题的一个基本示例:
CreatureAttack:包含与实体的一对多关系AttackEffect:包含与实体的一对多关系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:抱歉,标题没有描述性,我不知道该放什么。