我的问题是当我从列表中删除时,列表中的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;中是否有一个来绘制怪物?
答案 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
}