в наследнике ScriptableObject определяю лист объектов с типом базового класса.
Сам лист:
Синтаксис:
Используется csharp
[SerializeField, HideInInspector] private List<ItemBehaviourGeneratorBase> _generators =
new List<ItemBehaviourGeneratorBase>();
new List<ItemBehaviourGeneratorBase>();
базовый класс, тоже наследован от ScriptableObject:
Синтаксис:
Используется csharp
public abstract class ItemBehaviourGeneratorBase : ScriptableObject
{
protected const string createRootPath = "Item/Generator/Behaviour/";
protected const string createRootFileName = "ItemBehaviourGenerator";
public abstract Type ImageType { get; }
public abstract ItemBehaviourBase Generate(ItemBehaviourImageBase image);
}
public abstract class ItemBehaviourGeneratorBase<T> : ItemBehaviourGeneratorBase
where T : ItemBehaviourImageBase
{
public override sealed Type ImageType { get { return typeof(T); } }
public override sealed ItemBehaviourBase Generate(ItemBehaviourImageBase image)
{
T castedImage = image as T;
if (castedImage == null)
throw new ArgumentException("image " + image.GetType().Name);
return Generate(castedImage);
}
public virtual ItemBehaviourBase Generate(T image)
{
if (!image)
throw new ArgumentNullException("image");
return null;
}
}
{
protected const string createRootPath = "Item/Generator/Behaviour/";
protected const string createRootFileName = "ItemBehaviourGenerator";
public abstract Type ImageType { get; }
public abstract ItemBehaviourBase Generate(ItemBehaviourImageBase image);
}
public abstract class ItemBehaviourGeneratorBase<T> : ItemBehaviourGeneratorBase
where T : ItemBehaviourImageBase
{
public override sealed Type ImageType { get { return typeof(T); } }
public override sealed ItemBehaviourBase Generate(ItemBehaviourImageBase image)
{
T castedImage = image as T;
if (castedImage == null)
throw new ArgumentException("image " + image.GetType().Name);
return Generate(castedImage);
}
public virtual ItemBehaviourBase Generate(T image)
{
if (!image)
throw new ArgumentNullException("image");
return null;
}
}
И оно не сериализуется ни под каким соусом. Вернее, я могу добавить в лист объекты, но после сохранения и переоткрытия unity вся инфа пропадает.
вроде все по докам, пробовал делать классы не адстрактными, пробовал вместо листа использовать массив - не помогает, что я делаю не так?