C# 单游戏-加载多个互动程序
我在游戏中加载多个互动程序时遇到一些问题。我的游戏世界目前的像素大小为770x450。我已经在位置(0,330)加载了一个磁贴,并希望创建一个循环,沿x轴复制并加载磁贴,直到它达到(770,330) 我已经能够进行此循环,但是每次循环时,下一个磁贴不会加载,它只是移动到下一个位置,循环如下: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
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()
方法可以循环遍历所有的游戏片,并在相应的位置绘制它们