XNA列表For循环

时间:2014-01-19 15:25:32

标签: c# arrays for-loop xna

我无法运行循环,在屏幕上绘制不同的图像。这是我创建的列表,它在我的游戏类中:

RepMeter = new List<>();

RepMeter.Add(RepOne);
RepMeter.Add(RepTwo);
RepMeter.Add(RepThree);
RepMeter.Add(RepFour);
RepMeter.Add(RepFive);
RepMeter.Add(RepSix);
RepMeter.Add(RepSeven);
RepMeter.Add(RepEight);
RepMeter .Add(RepNine);
RepMeter.Add(RepTen);
RepMeter.Add(RepEleven);
RepMeter.Add(RepTwelve);
RepMeter.Add(RepThirteen);
RepMeter.Add(RepFourteen);
RepMeter.Add(RepFifteen);
RepMeter.Add(RepSixteen);
RepMeter.Add(RepSeventeen);
RepMeter.Add(RepEighteen);
RepMeter.Add(RepNineteen);
RepMeter.Add(RepTwenty);

我的更新代码:

if (activeCharacter.DestY >= 600)
{
     for (int RepMeter = 0; Rep < 20; i++)
         RepMeter[i];
}

这是我的抽奖代码:

if (RepMeter.RepOne)
{
     spriteBatch.Draw(RepOne, new Vector2(690, 29), Color.White);
}
else if (RepMeter.Two)
{
     spriteBatch.Draw(RepTwo, new Vector2(690,29), Color.White);
}
else if (RepMeter.RepThree)
{
     spriteBatch.Draw(RepThree, new Vector2(690,29),Color.White);
}

有人可以告诉我为什么我的RepMeter不会更改为列表中的下一个RepMeter图片吗?

1 个答案:

答案 0 :(得分:1)

这是猜测,因为你的代码有点奇怪,甚至不会编译。 无论如何,你想要做的是这样的事情:

    //this variable store the current texture index that will be displayed
    private int currentRep = 0;
    public void Update(GameTime gameTime)
    {
        if (activeCharacter.DestY >= 600)
        {
            currentRep++;
            //this line makes sure the current number doesn't point to an index higher than the number of items stored inside your list
            currentRep %= RepMeter.Count;
        }
    }

    public void Draw(GameTime gameTime)
    {
        spriteBatch.Begin();
        spriteBatch.Draw(RepMeter[currentRep], new Vector2(690, 29), Color.White);
        spriteBatch.End();
    }

这应该有效(未经测试),显然你需要确保RepMeter是List&lt; Texture2D&gt;你插入的内容实际上是Texture2D ......

无论如何,如果这是你的实际代码,我建议你从更简单的事情开始。

注意事项&amp;解释:

  1. 一般来说,你需要更新什么,你在update方法中登录并在draw方法中绘制。
  2. 你必须开始和结束你的spritebatch才能画画。