从列表<>中删除并绘制错误

时间:2013-10-31 10:38:52

标签: c# xna-4.0

我的问题是当我从列表中删除时,列表中的Draw功能会生效。意外的文件处理错误

List<monster> Monster = new List<monster>();

//Initilize
Monster.add(new Monster());

//Update
if (Monster[0]. health == 0)
{
   Monster.removeAt[0];
}

//Draw

If (Monster[0].health > 0)
{
spriteBatch.Draw(Monster[0].texutre,Monster[0].pos,Color.White);
}

有没有办法只根据List&lt;&gt;中是否有一个来绘制怪物?

3 个答案:

答案 0 :(得分:1)

将以下代码段用于绘图。

if(Monster.Any())
    spriteBatch.Draw(Monster.First().texutre,Monster.First().pos,Color.White);

这样它只会在有怪物的情况下画一个怪物。 Any()First()方法是LINQ,因此您必须在.cs文件的顶部指定using System.Linq;

答案 1 :(得分:1)

尝试在列表中循环并添加/删除怪物

for(int i=0;i<Monster.Count(); i++)
{
 var m = Monster.ElementAt(i);
 //Update
if (m.health == 0)
{
   Monster.Remove(m)
}

//Draw

If (m.health > 0)
{
spriteBatch.Draw(m.texutre,m.pos,Color.White);
}
}

答案 2 :(得分:0)

if(Monster.Count > 0){
    // draw
}