Я тут пилю симулятор потихоньку (без выходных 24/7) и решил сразу сделать редактор сценариев и всякого такого. Так вот сохранение Исследований, модулей и прочих вещей у меня вызывало некоторые проблемы, хотя я и раньше уже писал подобные системы, но более простые.
Как вариант можно попробовать сделать атрибут для полей, которые хочется сохранять (или просто все сериализуемые поля) и позже через assembly.getTypes (не помню точно) автоматически их в проекте собирать (по атрибуту или каким-то ещё признакам) и сохранять.
Ещё мне кажется, что эффективнее в игре все объекты хранить в виде словаря какого-то, а в момент сохранения в json конвертить этот словарь, а не каждый объект отдельно
суть задачи в том чтобы наследников было сколько угодно типов и чтобы их можно было легко из JSON доставать и создавать не описывая в каждом классе все каждый раз заново, мне кажется я уже придумал как это всё обойти, сейчас пробую. Думаю можно просто при SaveJSON - прямо в имени файла писать имя класса и тогда любой файл сам себя сможет воссоздать прямо из базового класса. Эффективность сохранения файлов в PC игре на HDRP у меня не на первом месте)