我刚刚深入研究了实体组件系统并喜欢这个想法。我已经了解它背后的基础知识,但细节是大多数问题隐藏的地方。所以我想知道是否有人可以帮助我克服它?
实体-组件结构应该是什么?我已经看到了两种实现方式 - 将实体作为对象/结构并在内部作为变量。其次,具有组件的数组或映射,其中数组或 int 在映射中的索引表示实体的 ID。哪种方式更好?
如果将实体作为合法对象的第一种方法更好,那么我应该如何找到具有系统特定组件的实体?我是否应该遍历每个实体,然后遍历它的组件数组以找出它是否具有此特定组件?相同的逻辑可以应用于不同组件的映射,因为我再次需要遍历映射以查找它是否具有特定的 id。
如果使用数组的第二种方法是正确的,那么如果我有一个像“PlayerController”这样的组件,它只分配给一个实体,但仍然会有这些组件的整个数组(只是空值,但它们也占用 64 位)。以防万一-我需要整个数组作为数组中项目的索引实际上代表实体的 id 所以我需要数组至少是具有该组件的实体的 id 的大小,但也可能是大于由于泛化
奇怪的是,如此美丽的架构在网上没有太多信息,只有图书馆(和那些教程),如果你想了解其中的深度,你必须查看它们。