【问题标题】:Monogame - Loading multiple tilesMonogame - 加载多个图块
【发布时间】:2016-04-10 20:28:18
【问题描述】:

我在将多个图块加载到我的游戏时遇到了一些问题。我的游戏世界目前的像素大小为 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();

【问题讨论】:

    标签: c# for-loop xna monogame


    【解决方案1】:

    您只绘制一次图块。您可以判断,因为您只有一个 spriteBatch.Draw() 电话。仅仅更新循环内的位置是不够的。您还必须在每个位置绘制它。

    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 并将它们绘制到相应的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多