Как хранит gameObject-ы, что бы при уничтожении удалялись?
Делать нужно так:private List<Enemy> enemies = new List<Enemy>();

private void DestroyEnemy(Enemy enemy)
{
    enemies.Remove(enemy);
    Destroy(enemy.gameObject);
}
Если сначала уничтожать gameObject, а потом пытаться выкинуть из списка, то может случиться нулреф из-за того, что компонент уже уничтожен.
Как-то половину про C# написали, половину про игру:Я сделал через List enemes, но при уничтожение врага объект не удаляется со списка
Вот это что значит?
Как враг "уничтожается" из списка - покажите метод уничтожения?
Какую ошибку выдает?
Как вы понимаете, что объект не удаляется?