【发布时间】:2011-03-20 04:43:24
【问题描述】:
我有以下课程,我的问题在于它的 GetComponent 函数
class GameObject
{
private List<GameComponent> _components = new List<GameComponent>();
public void AddComponent(GameComponent component)
void RemoveComponent(string name)
public T GetComponent<T>(string name) where T : GameComponent
}
class GameComponent
{
public string Name { get; set; }
}
所以在 GetComponent 中我想获取由name 标识的组件并将其作为 T 返回。
所以我会打电话NavigationComponent navigation = gameObject.GetComponent<NavigationComponent>("navigation");
其中 NavigationComponent 将是 GameComponent 的子类
由于每个 NavigationComponent 实例只会具有相同的名称“导航”,我正在考虑是否可以做一些事情来将 GetComponent 简化为以下内容
NavigationComponent navigation = gameObject.GetComponent<NavigationComponent>();
提前致谢。
更新 1
我应该提一下,GameObject 的工作方式类似于一组 GameObject,由它们的名称标识,因此其中每个只能有一个。
所以要详细说明我们有class SimpleNavigation : GameComponent {...}class AdvancedNavigation : GameComponent {...}class SensorSystem : GameComponent {...}
然后我会给 SimpleNavigation 和 AdvancedNavigation 命名为“navigation”,给 SensorSystem 命名为“sensor”
所以我不能在上面的例子中同时拥有 SimpleNavigation 和 AdvancedNavigation。
希望这是有道理的。
提前致谢。
附言我担心当没有太多收获和长期规范可能会改变时,我可能会设置太多约束,但这超出了我猜的问题范围
【问题讨论】:
-
你听说过依赖注入(IoC:控制反转)吗?
-
所以您想从
GameComponent的列表中获取NavigationComponent? -
不,我没有,我现在去查一下
-
@GenericTypeTea 是的,这是正确的
-
你使用的是什么版本的框架?
标签: c# components