我正在爲XNA編寫一個小型遊戲引擎。現在我的實體經理有一個它可以更新和呈現的所有實體的列表。可以說,然而,我想將這個列表分成'子列表'。也許一些實體不需要渲染,因此我們想要將渲染實體與非渲染實體分開,同時保持另一個顯示所有要更新的實體的列表。那就是3個列表。C#列表之間的一致性
有沒有一種方法可以輕鬆地保持列表之間的一致性?確保兩個列表中引用完全相同的對象? (不是該對象的副本?)。在C++中,我們只需要一個指向渲染實體的指針數組,另一個指向不需要的實體。
這個問題並不是真的把實體放入這些列表中,它的處理方式讓我很失望。要摧毀一個實體,我只需在該實體中設置一個'dispose'布爾值爲true。實體管理器在循環遍歷所有實體時,如果'dispose'設置爲true,則刪除對該實體的引用,並且垃圾清理器銷燬實體,因爲沒有更多引用留給它。我是否需要手動檢查與實體有關的每個列表,並從這些列表中刪除該實體以保持事物的一致性?
這個'問題'的另一個例子是四叉樹。我有一個2D遊戲,我爲所有實體生成一個四叉樹。位於2個網格位置之間的實體位於樹的2個分支中。我將如何將它從樹上移除?搜索整個樹中對該實體的引用?似乎有點沒有意義,有一個四叉樹,如果是這種情況..!
這會很慢,如果他們需要經常調用此方法,但不是? – 2012-02-01 03:09:14
@Chris,而不是同時維護3個列表,保持同步,調整大小等?這並不是說性能不是考慮因素,但我希望看到指向Linq查詢的不可接受的性能下降,並證明多列表方法確實更快。 – 2012-02-01 03:13:07