我对使用精灵完全陌生。
我需要为游戏界面绘制不透明的精灵图层。这些绘图调用的方法在两个不同的类中定义:
public class ColorStreamRenderer : Object2D
{
.
.
public override void Draw(GameTime gameTime)
{
.
.
this.Game.GraphicsDevice.Clear(Color.White);
this.SharedSpriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.Additive);
this.SharedSpriteBatch.Draw(this.backBuffer, new Rectangle(0, 0, 1280, 960), null, Color.White);
this.SharedSpriteBatch.End();
.
.
}
和
public class AvateeringXNA : Microsoft.Xna.Framework.Game
{
.
.
protected override void Draw(GameTime gameTime)
{
.
.
private Texture2D recttex;
.
GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Opaque);
this.recttex = Content.Load<Texture2D>("doodle");
spriteBatch.Begin(SpriteSortMode.Texture, BlendState.Opaque);
spriteBatch.Draw(recttex, rightMenu[ID], Color.White);
spriteBatch.End();
.
.
}
rightMenu[ID]
是Microsoft.Xna.Framework.Rectangle
位于输出显示窗口内的一个。
这两个类已经各自继承了一个类,由于C#不允许多重继承,所以我不能Content.Load
在ColorStreamRenderer
类中使用。所以精灵需要在不同的类中绘制。
现在,问题是,我无法控制精灵的深度。无论我传递什么参数,类的精灵AvateeringXNA
总是落后于类的精灵ColorStreamRenderer
。通过调整屏幕上的混合选项,我知道这些实际上是在屏幕上绘制的,因为后面的图层是部分可见的。
我已经尝试了 and 的所有重载SharedSpriteBatch.Begin
,SharedSpriteBatch.Draw
但它们都不起作用。layerDepth
即使通过参数显式定义深度for SharedSpriteBatch.Draw
andspriteBatch.Draw
也不起作用。