【发布时间】:2014-02-03 15:01:24
【问题描述】:
抱歉标题含糊,我不太清楚如何解释我的问题。
我正在创建一个实体组件系统 (ECS),但遇到了一些障碍。我有一个名为getComponent() 的函数,它的工作是使用给定组件类(在本例中为Name 组件)从给定实体中获取特定组件。到目前为止,我可以匹配 component 和 componentClass 以返回正确的组件。这是函数:
public static Component getComponent(int id, Class<? extends Component> componentClass){
ArrayList<Component> entity = getEntity(id);
for(Component component : entity){
if(component.getClass() == componentClass){
return component;
}
}
return null;
}
我的问题在于返回组件的类型转换。我将举一个简单的例子。在管理所有Name 组件的Namer 类中,我想循环遍历实体数据库,获取实体的Name 组件,执行逻辑,然后继续。问题是,为了从Name 获取数据,我必须像这样转换组件:
int entity = i;
Name n = (Name)Game.getComponent(entity, Name.class);
我希望能够做到这一点:
int entity = i;
Name n = Game.getComponent(entity, Name.class);
n.test = "Bob Binley"
我知道这是一个奇怪的“问题”,因为它工作得很好,但我不喜欢这样离开代码。考虑到getComponent() 函数将被调用很多,使用很多不同的Component's,我宁愿不必担心每次我想使用它时都会转换组件类型。
谢谢。
【问题讨论】: