我想要一些 2D 精灵来遮挡一些 3D DrawableGameComponents。举个简单的例子,暂停菜单(实现为 2D 精灵)应绘制在暂停的太空船(实现为 3D 游戏组件)的顶部。
XNA 框架自动调用 Microsoft.Xna.Framework.Game 和 Microsoft.Xna.Framework.DrawableGameComponent 类的 Draw 方法。
根据我的经验,我发现抽签顺序是:
- 游戏 Draw() 方法
- DrawableGameComponent Draw() 方法
我的 spriteBatch 绘制方法调用是我的 Game 类的绘制方法。因此,宇宙飞船被绘制在暂停菜单的顶部(使其不可读)。
在我看来,解决我的问题的最简单方法是颠倒调用 draw 方法的顺序。这可能吗?
我尝试将 DrawableGameComponents 的 DrawOrder 设置为不同的值(1000、1、0、-1、-1000),但它对 Game 和 DrawableGameComponent 实例之间的 XNA 框架 Draw() 方法调用顺序没有影响。
我查看了 SpriteBatch Draw 方法调用的 layerDepth,但它们似乎与 Game 和 DrawableGameComponent 类之间的 XNA Framework 绘制顺序无关。层深度似乎只影响 SpriteBatch 中的精灵。
我是使用 XNA 的新手,但我怀疑我对框架的要求太多了。如果是这种情况,实现将 2D 对象放置在 3D 对象之上的正常方法是什么?
任何援助将不胜感激。