- Home /
Serialization of builtin components
I am trying to serialize unity's builtin components (cameras, renderers etc) into a custom stream. The problem is that I can't determine, through reflection, which fields are to be serialized. While for monoBehaviours it's easy (serialize public plus [SerializeField] minus [NonSerialized]), this doesn't seem to work for builtin components. Is there some way how to determine the field/property list, or do I need to write surrogates for each type?
Answer by Bunny83 · Aug 23, 2016 at 06:11 PM
Yes, you would need surrogates for each type. Built-in components don't have their data on the managed side but on the native C++ side. The managed class is just a wrapper unlike your own MonoBehaviours.
As you might have noticed all built-in components have properties, not fields. All those property getter and setter are declared external. If you look at the serialized data (the YAML when force text serialization is enabled), you will see that the actual field names usually start with "m_XXXX". Those are the C++ fields.
Still, there must be some logic somewhere that lets unity serialize its own classes. I tried to look through the serialization logic assemblies, but couldn't find anything useful. So I guess the whole serialization of those classes is buried somewhere in the unmanaged code?
Yes, the whole serialization code is inside unmanaged code. Actually the whole engine is written in C++. $$anonymous$$ono is only used as scripting environment.
Your answer
Follow this Question
Related Questions
Is it possible to create a custom gettter/setter on SerializedProperty ? 0 Answers
Serialized Fields go bye bye on Android 0 Answers
How do I save scripts as variables in the inspector? 0 Answers
EndOfStreamException : Failed to read past end of stream 1 Answer
Serialization and Object references 0 Answers