我的 Sprite 没有在屏幕上绘制 XNA
my Sprite isnt drawing on screen XNA
我在这里错过了什么
雪碧Class
private Texture2D m_tex;
public Rectangle rect;
private bool m_travellingRight;
private int x_pos;
//constructor
public LightSaber(Texture2D tex, int xpos, int ypos)
{
m_tex = tex;
rect = new Rectangle(xpos, ypos, m_tex.Width, m_tex.Height);
m_travellingRight = true;
}
public void drawme(SpriteBatch sb)
{
if (m_travellingRight)
sb.Draw(m_tex, rect, Color.White);
else
sb.Draw(m_tex, rect, null, Color.White, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0);
}
public void updateme(GamePadState pad)
{
x_pos = rect.X;
if (pad.ThumbSticks.Left.X < 0 && x_pos > 0)
{
m_travellingRight = false;
rect.X -= 4;
}
else if (pad.ThumbSticks.Left.X > 0 && x_pos < 800 - rect.Width)
{
m_travellingRight = true;
rect.X += 4;
}
}
}
}
游戏 1:
LightSaber lightSaber;
lightSaber = new LightSaber(Content.Load<Texture2D>("Textures\Lightsaber"), 300, 500);
lightSaber.drawme(spriteBatch);
感谢您的帮助。
我在 Game1.class 中遗漏了很多代码,很高兴看到整个 class 看看您是否遗漏了什么。
所以现在,我会给你一些提示:
我在 game1 class 中没有看到任何 spritebatch.begin() 或 spritebatch.End(),因为它被缩短了,这些应该是必需的为了画什么。
您也可以尝试在应该绘制纹理的那一刻设置断点。并检查它是否确实绘制了它,或者至少可以到达它。
另一种可能,它确实绘制了精灵,但是它的位置超出了范围,(在游戏之外window),我更喜欢将位置放在0直到我确定它可以绘制纹理
此外,在使用不带大括号的语句时请注意。因为没有它们,它只能读取语句后的一行代码。如果您添加新行或注释掉该语句,则会出现意外行为。 (我以前犯过那个错误)。
暂时就这些,希望对您有所帮助
我在这里错过了什么
雪碧Class
private Texture2D m_tex;
public Rectangle rect;
private bool m_travellingRight;
private int x_pos;
//constructor
public LightSaber(Texture2D tex, int xpos, int ypos)
{
m_tex = tex;
rect = new Rectangle(xpos, ypos, m_tex.Width, m_tex.Height);
m_travellingRight = true;
}
public void drawme(SpriteBatch sb)
{
if (m_travellingRight)
sb.Draw(m_tex, rect, Color.White);
else
sb.Draw(m_tex, rect, null, Color.White, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0);
}
public void updateme(GamePadState pad)
{
x_pos = rect.X;
if (pad.ThumbSticks.Left.X < 0 && x_pos > 0)
{
m_travellingRight = false;
rect.X -= 4;
}
else if (pad.ThumbSticks.Left.X > 0 && x_pos < 800 - rect.Width)
{
m_travellingRight = true;
rect.X += 4;
}
}
}
}
游戏 1:
LightSaber lightSaber;
lightSaber = new LightSaber(Content.Load<Texture2D>("Textures\Lightsaber"), 300, 500);
lightSaber.drawme(spriteBatch);
感谢您的帮助。
我在 Game1.class 中遗漏了很多代码,很高兴看到整个 class 看看您是否遗漏了什么。
所以现在,我会给你一些提示:
我在 game1 class 中没有看到任何 spritebatch.begin() 或 spritebatch.End(),因为它被缩短了,这些应该是必需的为了画什么。
您也可以尝试在应该绘制纹理的那一刻设置断点。并检查它是否确实绘制了它,或者至少可以到达它。
另一种可能,它确实绘制了精灵,但是它的位置超出了范围,(在游戏之外window),我更喜欢将位置放在0直到我确定它可以绘制纹理
此外,在使用不带大括号的语句时请注意。因为没有它们,它只能读取语句后的一行代码。如果您添加新行或注释掉该语句,则会出现意外行为。 (我以前犯过那个错误)。
暂时就这些,希望对您有所帮助