我正在用C ++制作游戏,我正在考虑是否使用多态。 我知道在大多数时候使用多态性更好,但问题是我在游戏中制作了一些粒子效果,并且有一百个它们在一秒钟内弹出。如果我在这种情况下使用多态,我会经常分配和释放内存,这肯定会减慢游戏速度。
那么,我是否应该使用多态,甚至必须经常使用New / Delete对象?
顺便说一句,如果我的语法坏了,请纠正我。我还在学习英语。
答案 0 :(得分:2)
如果你不使用多态,你仍然需要相同数量的new / delete来创建所有粒子。多态性不会显着降低您的表现。它只会导致一些间接函数调用,而不是直接调用。这是几乎所有现代CPU的指令集都支持的。
因此,如果多态性可以很好地解决您的游戏设计问题,那就去吧。
回到初始问题创建/删除大量类似对象(如粒子)的问题,您可以考虑使用flyweight设计模式,“使用共享来支持大量的细粒度有效的对象“(设计模式,Gamma& al。)
答案 1 :(得分:1)
我认为使用多态的简单事实对性能本身没有影响或影响很小,这一切都取决于你如何设计你的游戏。
所以我的提示是: