Сделай так:
FightScene.Units.ForEach(Listalo => { if (Listalo) Destroy(Listalo); });
// удалить все уничтоженные объекты списка
FightScene.Units.RemoveAll(Listalo => Listalo == null);
Так же если тебе нужно удалить все элементы, то вызови FightScene.Units.Clear(); после уничтожения объектов. Т.е.
FightScene.Units.ForEach(Listalo => { if (Listalo) Destroy(Listalo);});
// очистить список
FightScene.Units.Clear();
Я иногда перебираю список в обратном порядке, чтобы уничтожить только нужные объекты:
for(int i = FightScene.Units.Count-1; i>=0; i--)
{
if(FightScene.Units[i].IsDead) // проверка юнита на смерть
{
Destroy(FightScene.Units[i]);
FightScene.Units.RemoveAt(i);
}
}
Т.к. в этом случае не используется foreach, который создает энумератор при переборе элементов списка, то не происходит исключения при изменении коллекции.