我正在尝试用C ++创建一个高效的“实体系统”,我在互联网上阅读了很多博客/文章/文档来获取大量信息,但我又有了一些问题。
我发现了两个有趣的主题:
对我来说,这两个系统看起来非常相似。
所以,我发现亚当·斯密的这个例子:https://stackoverflow.com/a/2021868
我需要一个灵活的系统:
// Abstract class
class Component
{
// data here
}
// exemple
class Car : public Component
{
// Data here
}
// Entity with components
class Entity
{
std::vector<Component*> components;
}
所以,如果我的实体有以下组件:Car,Transform,Sprite, 我的组件数组是否会有数据驱动系统等线性数据?
现在,我有系统:
class System
{
virtual void init();
virtual void clear();
virtual void update();
std::unordered_map< const char*, Entity*> entities;
}
class RendererSystem : public System
{
// Methods's definition (init, clear, …).
void update()
{
for( entity, … )
{
Sprite* s = entity->getComponent('sprite');
...
}
}
}
所有这些观点在我脑海中都显得“模糊”。
答案 0 :(得分:1)
new
分配(如果它是一个指针)。然后,一旦您分配了它,您将无需在将引用传递给