因为 Unity ECS,我最近阅读了很多关于 ECS 的内容。
ECS 架构有很多明显的优势:
ECS是面向数据的:数据倾向于线性存储,这是系统访问它的最佳方式。在体面的 ECS 实现中,数据是按顺序存储和处理的,对于任何给定的系统处理它的组件集几乎没有中断或没有中断。
ECS 是非常分区的:它自然地将数据与行为分开,强制“组合而不是继承”(google it)等。
ECS 对并行处理和多线程非常友好:由于事物的结构化方式,许多实体和组件可以避免冲突并与其他系统并行处理。
然而,ECS 的缺点(与 OOP 或实体组件 [无系统] 相比,直到最近在包括 Unity 在内的游戏引擎中很常见)很少被谈论,如果有的话。它们存在吗?如果他们这样做,他们是什么?