我在創建一個簡單的2D遊戲引擎的同時,更深入地從C++開始。在我的引擎我有(或希望有)的「抽象」 GameEntity
類,它攜帶的方法draw
,update
,也許position
(X,Y)。在我看來,我會添加更多的東西。使渲染方法虛擬?
類從GameEntity
繼承將是任何可能在屏幕上繪製(ParticleSystem
,MovingSprite
,StaticSprite
,GuiMenu
,等...)
我的問題是,要實現這一點,我已經宣佈GameEntity
draw()
和update()
方法虛:
virtual draw()=0;
virtual update()=0;
所以ParticleSystem
都有它自己的平局和MovingSprite
也有它自己的draw()
(和update()
)。
我知道虛函數是昂貴的,或者至少比普通方法更昂貴。你認爲我所做的事很糟糕嗎?或者太糟糕了?如果你這樣做,我會非常感激一個更好的方式來做到這一點。
謝謝!
你有沒有注意到你的代碼變慢了?我對此表示懷疑。良好的設計>微型優化。 – GManNickG 2009-11-18 05:08:45
感謝所有的答案,我想我一點也不會這麼做! – Goles 2009-11-18 11:29:15