C# 单游戏-加载多个互动程序

C# 单游戏-加载多个互动程序,c#,for-loop,xna,monogame,C#,For Loop,Xna,Monogame,我在游戏中加载多个互动程序时遇到一些问题。我的游戏世界目前的像素大小为770x450。我已经在位置(0,330)加载了一个磁贴,并希望创建一个循环,沿x轴复制并加载磁贴,直到它达到(770,330) 我已经能够进行此循环,但是每次循环时,下一个磁贴不会加载,它只是移动到下一个位置,循环如下: for (int i = 0; i < 770; i += 31) { position = new Vector2(i, 330); // Some sort of draw met

我在游戏中加载多个互动程序时遇到一些问题。我的游戏世界目前的像素大小为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?
    }
}

你只画了一次瓷砖。因为您只有一个
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();
}
public void Draw()
{
spriteBatch.Begin();
对于(int i=0;i<770;i+=31)
{
位置=新矢量2(i,330);
如果(i==744)
{
i=i+26;
位置=新矢量2(i,330);
}
spriteBatch.Draw(游戏片、位置、颜色、白色);
}
spriteBatch.End();
}

当然,您希望避免
Draw()
方法中的所有循环逻辑。唯一的解决方法是在
Update()
方法中,为希望绘制的每个位置创建一个平铺。然后,
Draw()
方法可以循环遍历所有游戏互动程序,并在相应位置绘制它们。

您只绘制了一次互动程序。因为您只有一个
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();
}
public void Draw()
{
spriteBatch.Begin();
对于(int i=0;i<770;i+=31)
{
位置=新矢量2(i,330);
如果(i==744)
{
i=i+26;
位置=新矢量2(i,330);
}
spriteBatch.Draw(游戏片、位置、颜色、白色);
}
spriteBatch.End();
}
当然,您希望避免
Draw()
方法中的所有循环逻辑。唯一的解决方法是在
Update()
方法中,为希望绘制的每个位置创建一个平铺。然后,
Draw()
方法可以循环遍历所有的游戏片,并在相应的位置绘制它们