2010-05-12 47 views
2

是的,這是關於我的遊戲引擎的另一個問題,它是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>(); 

驚人的如何工作。無論如何,這仍然只是語義上的改進。我的問題依然存在

  1. 這實際上是不好的?
  2. 什麼是更好的選擇?

回答

0

不知道遊戲的總體設計,很難知道這種模式是孤立的,好還是壞。如果它運作良好並且表現良好,那麼反對它的唯一潛在理由就是建築 - 它是否會擴展?

0

爲什麼你認爲它不好?

這就是泛型的原因。