<分区>
我正在用 Java(使用 LibGDX)为游戏引擎编写 Entity Component System。
我有一个包含各种组件的数组列表的实体。每个组件都继承自一个 Component 基类。
我想在我的实体上有一个方法,可以为我提供对特定类型组件(例如 RenderComponent、PhysicsComponent 等)的引用。我尝试了以下方法,但它似乎不起作用。
public class Entity
{
private ArrayList<Component> _components;
...
public void AddComponent(Component c)
{
_components.add(c);
c.Enable();
}
public Component GetComponent(String componentType)
{
Component s = null;
for (int i = 0; i < _components.size(); i++)
{
if (_components.get(i).getClass().getSimpleName() == componentType)
s = _components.get(i);
}
return s;
}
}
返回的对象为空。
我应该怎么做?有没有更聪明的方法让参数指定一个类型(而不是简单的字符串)?
此外,如果我想要特定类型的所有组件怎么办?我该如何处理?
我读过一些关于反射的内容,但我从未使用过它。我对 Java 编程还是很陌生。
提前致谢。