【问题标题】:my Sprite isnt drawing on screen XNA我的 Sprite 没有在屏幕 XNA 上绘图
【发布时间】:2016-11-11 22:42:10
【问题描述】:

我错过了什么

精灵类

    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);

感谢您的帮助。

【问题讨论】:

  • 它的 C# 是的,哈哈我的错误

标签: c# xna draw


【解决方案1】:

我错过了 Game1.class 中的很多代码,如果您缺少任何东西,很高兴看到整个类。

所以现在,我会给你一些提示:

  • 我在 game1 类中看不到任何 spritebatch.begin() 或 spritebatch.End(),因为它被缩短了,所以绘制任何东西都应该是必需的。

    李>
  • 您还可以尝试在应该绘制纹理的那一刻设置断点。并检查它是否确实绘制它,或者至少可以达到它。

  • 1234563 >
  • 另外,请注意使用不带括号的语句。因为没有它们,它只能读取语句后的一行代码。如果您添加新行或注释掉该语句,那么您将得到意想不到的行为。 (我之前也犯过这个错误)。

暂时就这些了,希望对你有帮助

【讨论】:

    猜你喜欢
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    相关资源
    最近更新 更多