Почему объекты в моем списке имеют значение null при использовании наследования в Unity?C#

Место общения программистов C#
Anonymous
Почему объекты в моем списке имеют значение null при использовании наследования в Unity?

Сообщение Anonymous »

Я работаю над проектом Unity, в котором у меня есть базовый класс Activator, который содержит список объектов, наследуемых от другого базового класса под названием Activable. Эти объекты являются экземплярами подкласса с именемSpecificActivable, который наследуется от Activable. Когда я добавляю объекты «SpecificActivable» в список «SpecificActivator» (который наследуется от Activator) в Unity Inspector, все выглядит нормально, но когда я запускаю игру, объекты в list имеют значение NULL.
Вот очень упрощенная версия моего кода:

Код: Выделить всё

public class Activator : MonoBehaviour
{
public List objectsToActivate;

public virtual void Start()
{
// Trying to access objects in the list
foreach (var obj in objectsToActivate)
{
Debug.Log(obj); // This logs "null"
}
}
}

public class SpecificActivator : Activator
{
//Additional stuff
}

public abstract class Activable : MonoBehaviour
{
public bool activated;

public virtual void Activate()
{
activated = true;
}
}

public class FM : Activable
{
public override void Activate()
{
base.Activate();
// Additional logic for FM
}
}
Вот несколько скриншотов из инспектора, когда игра не запущена и игра запущена (эти FM в упрощенном виде будут SpecificActivable).
Все в порядке
все становится нулевым, и список пуст во время выполнения
Пытался использовать декоратор [SerializeReference ], но это не сработало.
Если я использую только скрипт базового класса Activable для этих игровых объектов вместо SpecificActivable это работает.

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-in-unity

Вернуться в «C#»