我想要一些2D精灵来遮挡一些3D DrawableGameComponents。对于一个简单的例子,暂停菜单(实现为2D精灵)应该绘制在暂停的太空船上(作为3D游戏组件实现)。可以在SpriteBatch绘制调用之前绘制XNA DrawableGameComponents,以便绘制在DrawableGameComponents之上的精灵?
XNA框架自动调用来自Microsoft.Xna.Framework.Game和Microsoft.Xna.Framework.DrawableGameComponent的类的Draw方法。
以我的经验,我发现绘制顺序是:
- 游戏抽奖()方法
- DrawableGameComponent抽奖()方法
我spriteBatch绘制方法的调用都是平局我的Game类的方法。因此,太空飞船将被拖到暂停菜单的顶部(使其无法读取)。
在我看来,解决我的问题最简单的方法是颠倒绘制方法的顺序。这可能吗?
我已经尝试将DrawOrder的DrawableGameComponents设置为不同的值(1000,1,0,1,-1000),但它对Game和DrawableGameComponent实例之间的XNA框架Draw()方法调用顺序没有影响。
我已经查看了SpriteBatch Draw方法调用的layerDepth,但它们似乎与Game和DrawableGameComponent类之间的XNA Framework绘制顺序无关。图层深度似乎只影响SpriteBatch中的精灵。
我是新来的使用XNA,但我怀疑我是问太多的框架。如果是这种情况,将2D对象放置在3D对象顶部的正常方法是什么?
任何援助将不胜感激。
没错!我不知道那个base.Draw()正在调用DrawableGameComponent的Draw()方法。移动绘图逻辑上方的base.Draw()方法调用修改绘制顺序。谢谢。 – 2010-07-11 07:41:49