【发布时间】:2011-02-18 16:20:15
【问题描述】:
是的,这是关于我的游戏引擎的另一个问题,coming along very nicely,非常感谢你们。
因此,如果您观看了视频(或没有观看),游戏中的对象由各种组件组成,例如位置、精灵、运动、碰撞、声音、健康等。我定义了几种消息类型用于实体和组件之间的“告诉”类型通信,但仅此而已。很多时候我只需要询问一些东西,例如一个实体的位置。
我的代码中有几十行如下所示:
SomeComponent comp = (SomeComponent)entity.GetComponent(typeof(SomeComponent));
if (comp != null) comp.GetSomething();
我知道这很丑陋,而且我知道铸造不当 OO 设计的味道。但是,尽管事情很复杂,但似乎没有更好的方法。我当然可以“硬编码”我的组件类型,并且只需
SomeComponent comp = entity.GetSomeComponent();
但这似乎是一种逃避,而且很糟糕。
我真的只是意识到,在写这篇文章时,在我的代码以这种方式几个月没有解决方案之后,泛型将帮助我。
SomeComponent comp = entity.GetComponent<SomeComponent>();
令人惊叹的工作原理。无论如何,这仍然只是语义上的改进。我的问题仍然存在。
- 真的有那么糟糕吗?
- 有什么更好的选择?
【问题讨论】:
标签: c# design-patterns components messages