在阅读了有关实体组件系统的一些文档之后,我决定实施我的。到目前为止,我有一个World类,其中包含实体和系统管理器(系统),Entity类(其中包含作为std :: map的组件)以及一些系统。我在世界中将实体作为std :: vector持有。到目前为止没有问题。让我感到困惑的是实体的迭代,我对此一无所知,所以我仍然无法实现这一部分。每个系统都应该保存他们感兴趣的实体的本地列表吗?还是应该仅遍历World类中的实体并创建一个嵌套循环以遍历系统并检查实体是否具有系统感兴趣的组件?我的意思是 :
for (entity x : listofentities) {
for (system y : listofsystems) {
if ((x.componentBitmask & y.bitmask) == y.bitmask)
y.update(x, deltatime)
}
}
但是我认为,在嵌入脚本语言的情况下,位掩码系统会带来一定的灵活性。或者为每个系统使用本地列表将增加类的内存使用量。我非常困惑。