Почему? чтобы обойти невозможность десеарелизации Монобехов, я знаю что можно создать пустой класс в сцене и десериализовать, в него, а потом уже зная его класс создать непосредственно нужный и скопировать/удалить фейк монобех. Но это меня прям вымораживает, поэтому я и создал SaveData чтобы десериализовать его напрямую без создание фейковых монобехов, однако и это выглядит чересчур костыльно.
Комментарий недоступен
потому что они физически существуют в сценах как игровые объекты
Бро, можно юзать JSON .NET For Unity https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347
Он умеет сохранять и дочерние классы
https://stackoverflow.com/questions/8513042/json-net-serialize-deserialize-derived-types
вчера потыкался с ним и удалил, ничего особого он не добавляет по возможностям
Как вариант можно попробовать сделать атрибут для полей, которые хочется сохранять (или просто все сериализуемые поля) и позже через assembly.getTypes (не помню точно) автоматически их в проекте собирать (по атрибуту или каким-то ещё признакам) и сохранять.
Ещё мне кажется, что эффективнее в игре все объекты хранить в виде словаря какого-то, а в момент сохранения в json конвертить этот словарь, а не каждый объект отдельно
суть задачи в том чтобы наследников было сколько угодно типов и чтобы их можно было легко из JSON доставать и создавать не описывая в каждом классе все каждый раз заново, мне кажется я уже придумал как это всё обойти, сейчас пробую. Думаю можно просто при SaveJSON - прямо в имени файла писать имя класса и тогда любой файл сам себя сможет воссоздать прямо из базового класса. Эффективность сохранения файлов в PC игре на HDRP у меня не на первом месте)
Комментарий недоступен