我在创建一个简单的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