【问题标题】:Displaying arrays of sprites in XNA在 XNA 中显示精灵数组
【发布时间】:2012-07-06 03:26:11
【问题描述】:

我创建了一个 Vector2 数组,它保存了精灵将要显示的位置:
Vector2[,] SpritePosition = new Vector2[4,4];

然后我写了一个for循环来初始化每个成员的位置:

public void loadArray()
    {
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                SpritePosition[i, j] = new Vector2(i*texture.Width , j*texture.Width);
            }
        }
    }

我创建了一个包含精灵的纹理,并且下一个位置是根据纹理中图像所需的宽度计算的(一个图像被加载为 4 行,每行 4 行)。

然后我在Draw()函数中使用了如下代码

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
        for(int i=0;i<4;i++)
            for(int j=0;j<4;j++)
                spriteBatch.Draw(texture, SpritePosition[i,j], Color.White);
        spriteBatch.End();  

但是当我运行程序时,它只显示了 1 张图像,而不是 4 行 4

【问题讨论】:

    标签: c# xna sprite


    【解决方案1】:

    不太确定,但一方面。 我想你的意思是SpritePosition[i, j] = new Vector2(i*texture.Width , j*texture.Height); (第二次是高度,不是宽度)

    而且我认为这里不需要数组,为什么不只是

    spriteBatch.Draw(texture, new Vector2(i*texture.Width,j*texture.Height), Color.White);

    另外,这不是一个“为您准备的代码”网站。我看到你刚刚在我回答你的最后一个问题后发布了这个问题。看起来你似乎并没有想过要自己去弄清楚。

    【讨论】:

    • 是的,我指的是身高。是的,我会记住这一点。只是我刚开始游戏编程,很多困难出现得太快了
    • 成功了。我并不是要将此用作您网站的代码。如果看起来是这样,我很抱歉
    • 很高兴看到它有效,并且好的。题外话:你问了第 3000 个 XNA 问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    相关资源
    最近更新 更多