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

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

Сообщение Anonymous »

Я работаю над проектом Unity, в котором у меня есть базовый класс Activator, который содержит список объектов, унаследованных от другого базового класса под названием Activable. Эти объекты являются экземплярами подкласса SpecificActivable, который наследуется от Activable. Когда я добавляю объекты «SpecificActivable» в список «SpecificActivator» (который наследуется от «Activator») в Unity Inspector, все кажется нормально, но когда я запускаю игру, объекты в списке имеют значение 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#»