2010-02-25 70 views
6

我最近跳入XNA池,並在C#中學習所有框架的細節。我在研究中注意到的一件事是,似乎沒有被廣泛接受的「適當」方法來實現GameComponents。XNA GameComponent實現首選項...?

閱讀this thread(等等)之後,我發現的喜好的遊戲開發者廣泛。我已經看到了從未使用GameComponents在所有(或僅微),而有些人則使用它們一切,一直到播放器/敵臺,導彈等一些主張然後也有一些採取更溫和方法,併爲中高級別實體(如屏幕,渲染器,場景等)保留GameComponent體系結構,這些實體又包含並驅動其更細粒度的遊戲單元。

在這一天結束,它是由遊戲開發商,以確定如何最好地實施該框架。由於StackOverflow與精明的開發人員密不可分,他們已經忘記了比我所知道的更多的東西,所以我想在我繼續沿着這條路走下去,並且自己使用框架之前,先了解一下這個共識是什麼。

人照顧與他們的想法附和?提前致謝!

回答

2

我是很新,XNA以及所以採取這個答案與一粒鹽。

我認爲它可以歸結爲一種風格偏好。我不確定使用GameComponent和更多手動方法之間的性能特徵,但我知道,對我個人而言,我很快就感到沮喪,試圖利用GameComponent,因爲它沒有真正融入我的思維或編程風格。在我看來,我是從OOP,程序,功能和其他編程範例中挑選出來的東西的組合。 GameComponent似乎正在採用嚴格的面向對象方法。

但我會說,讓一切一個GameComponent,或甚至一般的一類,其中表現而言,可以成爲問題。在遊戲開發世界中,最大可讀性和可維護性的問題似乎在刀刃上,在這種情況下,有時候你真的需要從代碼中榨取優化。例如,有時最好將你的一個遊戲對象變成一個結構體(值類型),這樣你就可以節省一些內存,並停止討厭的垃圾收集器使你的遊戲滯後(正如我在this question I asked中學到的)。

+0

感謝您的迴應!我聽說使用Game.Components集合會導致低開銷,但聽起來像是您在其他方面競爭。你認爲創建自己的實體層次結構/管理系統可以提供更高的性能潛力嗎? – Syndog 2010-02-25 23:15:32

+0

對不起,我真的不知道。你當然可以得到更多的控制,所以也許你可以擠出更多的表現。但是,MS也許知道他們在做什麼,並且從GameComponent中擠出性能開始:)但是對於某些對象,特別是如果你打算在屏幕上有很多對象(比如子彈),最好留下來性能方面的結構 – Bob 2010-02-25 23:21:27

+0

GameComponents將在內部實施爲列表,無法獲得比這更高的效率!至於結構,我不確定這是一個好主意,在C#中傳遞結構將涉及大量的複製值。垃圾收集器在xbox上速度很慢,在PC上幾乎可以忽略它。 – Martin 2010-02-25 23:46:05