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