0

我需要为 ECS 编写一个函数,该函数接受可变数量的模板参数(组件)并且没有参数,并将返回附有这些组件的实体列表。

格式如下所示:

auto list = registry.getEntityGroupWithComponents<TransformComponent, RenderComponent>();

在函数中,我需要访问每个 Component 类的静态 ID 以确定要返回的实体,如下所示:

template <class... T>
std::vector<Entity> getEntityGroupWithComponents()
{
     auto componentIDs = { T::s_id };
     //return entities with all componentIDs in list
}

我已经搞砸了很多,无法想出任何产生这种行为的东西,但我很确定这是可能的,因为我认为我以前见过类似的 API。任何帮助将不胜感激,谢谢!

4

1 回答 1

0

不确定您需要什么,但可能类似于

template <class... T>
std::vector<Entity> getEntityGroupWithComponents()
{
    return {enitity(T::s_id)...};
}

?

取决于如何从组件 id 构造实体。

于 2020-12-06T18:48:03.767 回答