我正在为游戏编写组件实体系统,但遇到了一些障碍。我有一个List<Component>
派生类调用 ComponentList,其中包含一个实体的所有组件。我还有一个方法可以返回一个名为 GetComponent 的组件。它通过字符串名称执行此操作。
public Component GetComponent(string name)
{
foreach (var c in this)
{
if (c.Name == name)
return c;
}
throw new Exception("Component " + name + " does not exist.");
}
但是,当从 Component 派生一个类,将其粘贴到 ComponentList 中,然后将其拉出时,我必须强制转换为该类型,这有点不方便。
TestComponent t1 = (TestComponent)Entity.ComponentList.GetComponent("Test1");
我知道有一些特殊的、神奇的方法可以使用 < T > 来获取类型,但我不确定如何使用它,或者它是否适用于这种情况。有什么建议吗?