如何在不使用DrawableGameComponent的情况下更改DrawOrder

时间:2011-03-22 17:26:57

标签: xna xna-4.0

阅读另一个SO question似乎DrawableGameComponent不是前进的方向。我自己做了一些研究,并使用Particle sample中的XNA Creators website,我决定删除DrawableGameComponent s的使用。一切都编译得很好,除了我没有DrawOrder可用的事实,这个例子将它用于粒子。

如何更改DrawOrder,就好像我使用的是DrawableGameComponent

2 个答案:

答案 0 :(得分:4)

GameComponent是一个很棒的工具,可以让您的代码更易于使用和重用。我会忽视Andrew Russell从另一个SO问题中回答的问题。这是高度偏见。 GameComponent可以使用。它们类似于单身人士。你不会放弃使用Singleton模式,因为有人对此表达了负面意见,不是吗?

尝试复制框架中已存在的此功能真是太愚蠢了。 Andrew Russell认为GameComponent可以使您的代码变得更加混乱。我认为尝试编写自己的分层绘图系统会使代码更加混乱。

底线:使用已存在的功能。不要改变你的编码风格,因为有人侮辱了它。当旧款式仍然有效时,你不必使用最新和最好的。

答案 1 :(得分:3)

我不会告诉你哪种方法更好,但是如果不使用GameComponents就可以这样做:

在游戏的Draw方法中,您可以按照自己的顺序调用粒子系统的Draw方法:

smokePlumeParticles.Draw(gameTime);
explosionSmokeParticles.Draw(gameTime);
projectileTrailParticles.Draw(gameTime);
explosionParticles.Draw(gameTime);
fireParticles.Draw(gameTime);