Monogame - 加载多个方块

Monogame - Loading multiple tiles

我在将多个图块加载到我的游戏时遇到了一些问题。我的游戏世界目前的像素大小为 770x450。我在位置 (0, 330) 加载了一个图块,并想创建一个循环,沿 x 轴复制和加载图块,直到它到达 (770, 330)。

我已经能够进行这个循环,但是在每次循环时,下一个图块不会加载,它只是移动到下一个位置,这是循环:

for (int i = 0; i < 770; i += 31)
{
    position = new Vector2(i, 330);
    // Some sort of draw method here!
    if (i == 744)
    {
        i = i + 26;
        // or here...
        position = new Vector2(i, 330);
        // or maybe here?
    }
}

如果这有帮助,这是我目前的 Draw() 方法:

spriteBatch.Begin();
spriteBatch.Draw(gameTile, position, Color.White);
spriteBatch.End();

您只绘制了一次瓷砖。您可以判断,因为您只有一个 spriteBatch.Draw() 电话。仅仅更新循环内的位置是不够的。你也必须在每个位置画它。[=​​15=]

public void Draw()
{
    spriteBatch.Begin();

    for (int i = 0; i < 770; i += 31)
    {
        position = new Vector2(i, 330);
        if (i == 744)
        {
            i = i + 26;
            position = new Vector2(i, 330);
        }
        spriteBatch.Draw(gameTile, position, Color.White);
    }

    spriteBatch.End();
}

当然,您希望避免 Draw() 方法中所有那些循环逻辑。解决这个问题的唯一方法是在 Update() 方法中为每个要绘制的位置创建一个图块。然后 Draw() 方法可以循环遍历所有 gameTiles 并将它们绘制在相应的位置。