У меня есть класс для определения, например, корабля, тогда у меня есть массив класса с некоторыми параметрами по умолчанию. Но позже я хочу иметь возможность добавлять к список класса с использованием одного из предварительно определенных примеров. Я не знаю, как добавить предопределенный класс в список, одновременно создав его копию, а не указатель на исходный массив. Вот код, надеюсь, все ясно.C# как добавить класс в список из массива классов
public enum ShipType
{
Capital,
Cruiser,
Frigate,
Fighter,
Colony,
NumShipTypes
}
public class Ship
{
public Vector3 ShipPosition;
public ShipType Type;
public string DesignName;
public Ship(ShipType type,string designame)
{
Type = type;
DesignName = designame;
ShipPosition = Vector3.zero;
}
}
Тогда мой массив типов по умолчанию: -
public Ship[] AllShips = new Ship[(int)ShipType.NumShipTypes]
{
new Ship(ShipType.Capital,"MassiveOne"),
new Ship(ShipType.Cruiser,"MediumOne"),
new Ship(ShipType.Frigate,"SmallerOne"),
new Ship(ShipType.Fighter,"TinyOne"),
new Ship(ShipType.Colony,"Mayflower")
};
Теперь создать список и Heres, где я хочу, чтобы добавить копию одного из выше: -
public List<Ship> FleetShips = new List<Ship>();
FleetShips.Add(AllShips[(int)ShipType.Fighter]);
Но это, кажется, просто добавляет ссылку или указатель на тот, что находится в массиве. Что мне нужно что-то вроде этого, но это на самом деле работает: -
FleetShips.Add(new AllShips[(int)ShipType.Fighter]());
, но это дает мне «это поле, но используется как типа» ошибка
Любые идеи?
Спасибо, я пошел с этим решением. – user2163342
Удивительный! Рад, что смог помочь. –