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 并将它们绘制在相应的位置。
我在将多个图块加载到我的游戏时遇到了一些问题。我的游戏世界目前的像素大小为 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 并将它们绘制在相应的位置。