Не знаю какой сериализатор в юнити, но System.Runtime.Serialization отлично сохраняет и восстанавливает классы не зная их типа.
В Unity сохраняется только по типу ссылки. Т.е. если ссылка MonoBehaviour, то ни черта не сохранит, даже если в эту ссылку будет записан объект с кучей инфы(
Пример просто на C#, но надеюсь Mono тоже поддерживает.
private static byte[] Serialize(object obj)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bf.Serialize(stream, obj);
stream.Close();
return stream.ToArray();
}
private static object Deserialize(byte[] array)
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream(array);
object obj = bf.Deserialize(stream);
stream.Close();
return obj;
}
Только, если десириализацию(восстановление) делать в OnEnable можно, то когда сериализацию делать? Проверять в Editor'е, если объект Dirty, то сохранить его?