Если я вас правильно понимаю, вам нужно иметь один экземпляр, например List<Move>
, и вы хотите «зарегистрировать» каждый созданный экземпляр Move
здесь.Так почему бы не просто что-то вроде
// This is a static class so it does not have to be instantiated
// but rather simply "lives" in the assets
public static class MoveManager
{
public static List<Move> Moves = new List<Move>();
}
Тогда вы могли бы что-то вроде
public class Move
{
private int power;
private float accuracy;
private string type;
private string style;
public Move(int p, float a, string t, string s, float sh)
{
power = p;
accuracy = a;
type = t;
style = s;
// a static class member is simply accessed via the type itself
MoveManager.Moves.Add(this);
}
}
problem: Когда вы удаляете их из списка?
Обычно вы хотите сделать это в деконструкторе, например,
~Move()
{
MoveManager.Moves.Remove(this);
}
НО в Unity деконструктор не вызывается автоматически - особенно, если что-то еще ссылается на этот Move
экземпляр ... предупреждение спойлера: список Moves
будет всегда!Поэтому при необходимости вам придется очищать список Moves
«вручную» каждый раз, когда вы действительно хотите уничтожить экземпляр Move
.