如何正确访问C ++实体组件系统中的组件?
(我正在描述的内容基于此设计:什么是实体系统框架?,向下滚动即可找到它) 我在用C ++创建实体组件系统时遇到了一些问题。我有我的Component类: class Component { /* ... */ }; 实际上是要创建其他组件的接口。因此,要创建自定义组件,我只需实现接口并添加将在游戏中使用的数据: class SampleComponent : public Component { int foo, float bar ... }; 这些组件存储在Entity类中,该类为Entity的每个实例提供唯一的ID: class Entity { int ID; std::unordered_map<string, Component*> components; string getName(); /* ... */ }; 通过哈希组件的名称将组件添加到实体(这可能不是一个好主意)。当我添加一个自定义组件时,它被存储为组件类型(基类)。 现在,另一方面,我有一个System接口,它在内部使用Node接口。Node类用于存储单个实体的某些组件(因为系统对使用实体的所有组件不感兴趣)。当系统必须使用时update(),它仅需要遍历由不同实体创建的存储节点。所以: /* System and Node implementations: (not the interfaces!) */ class …