从列表和游戏中删除对象

本文关键字:删除 对象 游戏 列表 | 更新日期: 2023-09-27 18:24:01

我遇到的问题是,我创建了一个包含对象的列表,但当玩家与有问题的对象碰撞时,我无法将其从列表中删除。

//This is where the issue is
foreach (Objective seagull in seagulls)
{
    if (Objective.visable == false)
    {
        seagulls.Remove(seagull);
    }
}

编辑:在改为for循环后,我现在的问题是remove不起作用,我不知道remove函数在问我什么?

从列表和游戏中删除对象

使用for时,应该使用RemoveAt,因为它将引用您的索引。Remove将期望一个值匹配,这可能是您的新for实现不起作用的部分原因。


您收到该错误的原因是,您正在枚举一个已修改的集合。如果您使用for循环,而不是foreach,那么您将能够在删除特定索引的同时进行迭代。否则,您需要创建一个单独的List,它是您的List的副本。移除它,然后将其与另一个相等。

int total = example.Count;
List<Example> example;
for(int i = 0; i < total; i++)
     if(...)
     {
           example.RemoveAt(i);
     }

条件将是您在删除之前的检查。我不确定那会是什么,但会是类似的。为了简洁起见,我简化了一些代码。

Yo可以在您的"海鸥"中放置一些类似"活动"的标志,然后删除所有

seagulls.removeall(c => c.active == false)