【发布时间】:2015-01-08 21:53:47
【问题描述】:
我以使用 XNA 在屏幕上绘制纹理而闻名。我只是无法让它工作。 我确实正确加载了纹理。
protected override void Draw(GameTime gameTime)
{
spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null,
selectedLevel.GetCamera().getViewMatrix(new Vector2(1.0f)));
graphics.GraphicsDevice.Clear(Color.Black);
foreach (MovableObject movableObject in selectedLevel.movableObjects)
{
if (movableObject is Enemy)
{
Enemy enemy = (Enemy)movableObject;
ThrowAttack attack = ((ThrowAttack)enemy.getAttack());
if (attack != null && attack.getThrowObject() != null)
{
attack.getThrowObject().Texture = TextureLoader.GetInstance().GetTexture(attack.getThrowObject().TextureName);
attack.getThrowObject().Animate(Direction.Right, gameTime);
attack.getThrowObject().Walk(Direction.Right, 2f);
attack.getThrowObject().Update(gameTime);
attack.getThrowObject().Draw(spriteBatch);
}
}
}
spriteBatch.End();
base.Draw(gameTime);
}
攻击对象中的平局:
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, position, SpriteRectangle, Color.White, 0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0f);
}
上述 .draw 方法中的纹理和位置变量有效。只是不使用 foreach 循环中的特定纹理。
有什么想法吗?
【问题讨论】:
-
什么不起作用?它会抛出异常还是只是没有出现在屏幕上?
position和SpriteRectangle变量在调试器中是否合理? -
SpriteRectangle 为 0,0。但也在绘制的精灵上。是的,问题是我没有错误/无论如何。它只是没有显示,但会更新(四处移动)。
-
出于好奇,如果你看不到它,你怎么知道它在四处移动?
-
魔术!哈哈,不,我调试了位置。它确实发生了变化(一直水平变化)。但奇怪的是,一切都是用这种方法绘制的。我猜不是这个纹理?这很奇怪,因为我在其他地方使用了这种纹理并且确实显示了。
-
那就不知道了。我唯一能想到的另一件事是有什么东西正在擦除/绘制它。