~AvA~ писал(а):Привет, если бы это была общая проблема, о ней давно знали бы, логично?
То есть, или ты делаешь что-то неправильно, либо столкнулся с каким-то граничным случаем.. может код нам поможет понять, что ты там пытаешься сделать. Какой тип ты там собрался сохранять и вот это вот всё ;-0
Тут разговор не совсем о коде. Я не допускаю каких-то глобальных ошибок, просто любые не сериализованные классы, в моём случае это класс FieldInfo из System.Reflection и, например, класс Type из System, всегда очищаются, ведь они не являются сериализованными классами по своей сути. И ещё, я забыл написать, что всё это я делаю для редактора, довольно странно говорить о компиляции скриптов в игре. И вот, для редактора у меня существует мой кастом инспектор, где я беру данные из нужных мне объектов сцены и пытаюсь их запомнить. Всё что мне нужно, это запомнить FieldInfo и добавить его в мой ScriptableObject для данных редактора, пока что это самый удобный вариант. И вот мы подошли к проблеме. Суть в том, что я могу сохранить саму переменную FieldInfo, ведь это ссылка на поле в C# скрипте, это не ссылка на объект сцены, даже чтобы использовать FieldInfo.GetValue или SetValue, нам нужно указать ссылку на объект. И прекрасно то что всё сохраняется, но до поры до времени. После изменений в скриптах, притом в любых, ведь компилируются все сразу, всё отчищается. Весь массив FieldInfo становится null, ну или даже просто переменная FieldInfo, или переменная Type. Такую же учесть ждет и ваш класс, если вы не пропишите перед его объявлением атрибуту System.Serializable, это решит проблему, но как решить это проблему с другим недоступным для редактирования классами, мне не понятно. Есть вариант запоминать не весь FieldInfo, а только имя поля и имя типа в string (после чего сам тип можем получить через Type.GetType("Имя Типа")), а иначе после компиляции опять потеряем ссылки. Но это вариант выглядит сильно костыльно, но походу иначе никак.