Когда вы делаете
game.CurrentCreature = unicorn;
Вы перезаписываете указатель в game.CurrentCreature одним указателем на объект единорога. Массив все еще имеет указатель на объект дракона. Это не должно быть изменено, так работают указатели.
Edit:
Небольшое объяснение того, что происходит с указателями:
Сначала вы создали 2 объекта
Creature dragon = new Creature();
dragon.Name = "Dragon";
Creature Unicorn = new Creature();
dragon.Name = "Unicorn";
У этого созданного дракона есть указатель на ваш объект дракона, а у единорога есть указатель на ваш объект единорога.
Затем вы устанавливаете указатель игры. Текущее существо - указатель дракона.
game.CurrentCreature = dragon;
Затем вы добавляете указатель на дракона, текущее существо, в список
List<Creature> list = new List<Creature>();
list.Add(game.CurrentCreature);
Затем вы заменяете указатель в game.CurrentCreature (был драконом) указателем на объект единорога.
game.CurrentCreature = unicorn;
Это никак не повлияет на указатель, удерживаемый в объекте дракона.
Приветствия