我正在製作一款遊戲,其中幾乎所有的東西都從實體繼承。對於需要渲染的所有實體,我也有一個IRenderable接口。有關鑄造問題的幫助
加載該級別時,每個IRenderable實體都放置在IRenderable *的向量中,然後傳遞給渲染器。
當我實例化任何實體時,我將它添加到Entity *的向量中。
我想知道的是當這個實體發送一個ENTITY_DESTROYED消息時我應該做什麼?
問題是我不知道這個實體是否可以IRenderable。我不得不爲此嘗試,並且我不確定在這裏投射是否是個好主意。
我還能做些什麼來避免施放?
感謝
還有一點要注意,即使我知道它是IRenderable,指針可能因多重繼承是不同的。
作爲一種警告的話,這種設計可以縮放到幾千個實體。一個更好的主意是讓實體通過控制數據(例如在實體代碼中顯式創建/銷燬可渲染對象)或使用「每次調用draw」方法來告訴某個渲染器渲染並廢除可渲染對象作爲繼承層次結構或組件模型的一部分。我自己也在自己的遊戲引擎中犯了同樣的錯誤,並且很想撤銷它......更不用說虛擬化/繼承的代價了,如果你想在PC之外運行其他任何東西。 – jheriko