Unity не хочет сериализовать List<Item>

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Unity не хочет сериализовать List<Item>

Сообщение BlackMamba 19 апр 2018, 21:17

привет.
в наследнике ScriptableObject определяю лист объектов с типом базового класса.
Сам лист:
Синтаксис:
Используется csharp
[SerializeField, HideInInspector] private List<ItemBehaviourGeneratorBase> _generators =
    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;
  }
}


И оно не сериализуется ни под каким соусом. Вернее, я могу добавить в лист объекты, но после сохранения и переоткрытия unity вся инфа пропадает.
вроде все по докам, пробовал делать классы не адстрактными, пробовал вместо листа использовать массив - не помогает, что я делаю не так?
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: Unity не хочет сериализовать List<Item>

Сообщение seaman 20 апр 2018, 00:09

Что в ItemBehaviourGeneratorBase по Вашему может сериализоваться?
Полей нет - сериализоваться нечему.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Unity не хочет сериализовать List<Item>

Сообщение IDoNotExist 20 апр 2018, 09:05

Наследник от ScriptableObject не будет сериализоваться, если не создан его ассет.
https://unity3d.com/ru/learn/tutorials/modules/beginner/live-training-archive/scriptable-objects
Синтаксис:
Используется csharp
public class MakeScriptableObject {
    [MenuItem("Assets/Create/My Scriptable Object")]
    public static void CreateMyAsset()
    {
        MyScriptableObjectClass asset = ScriptableObject.CreateInstance<MyScriptableObjectClass>();

        AssetDatabase.CreateAsset(asset, "Assets/NewScripableObject.asset");
        AssetDatabase.SaveAssets();

        EditorUtility.FocusProjectWindow();

        Selection.activeObject = asset;
    }
}
 
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Unity не хочет сериализовать List<Item>

Сообщение BlackMamba 20 апр 2018, 21:12

seaman писал(а):Что в ItemBehaviourGeneratorBase по Вашему может сериализоваться?
Полей нет - сериализоваться нечему.

А можно по подробнее, так как я себе это вижу совсем иначе:
1. поля есть в ScriptableObject
2. сериализуется ссылка на объект, а не сам объект
3. если твои слова верны, то при добавлении в данный лист будут сериализоваться только поля в ItemBehaviourBase, а все поля наследников идут лесом

IDoNotExist писал(а):Наследник от ScriptableObject не будет сериализоваться, если не создан его ассет.

Ну конечно, я проверял сериализацию, создавая тестовые экземпляры наследников ItemBehaviourGeneratorBase - по-другому никак
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: Unity не хочет сериализовать List<Item>

Сообщение BlackMamba 20 апр 2018, 21:15

seaman писал(а):Что в ItemBehaviourGeneratorBase по Вашему может сериализоваться?
Полей нет - сериализоваться нечему.

попробовал добавить public int testInt - не помогло
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 32