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<> 中是否有一个怪物来绘制怪物?

4

3 回答 3

1

为您的绘图使用以下代码片段。

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

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

于 2013-10-31T10:41:25.277 回答
1

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

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);
}
}
于 2013-10-31T10:41:49.853 回答
0
if(Monster.Count > 0){
    // draw
}
于 2013-10-31T10:41:33.790 回答