[SerializeField] What Does Unity Actually Serialize?
The article explains what Unity serialization is and what [SerializeField] really does: it lets Unity serialize a private field and show it in the Inspector, but only if the field’s type is supported. It compares [SerializeField], [System.Serializable], [SerializeReference], [System.NonSerialized], [HideInInspector], and [FormerlySerializedAs], then lists common serializable types such as primitives, enum, Unity structs like Vector3 and Color, object references, and serializable custom classes and lists. It also covers what Unity cannot serialize directly, such as static and readonly fields, properties, Dictionary, multidimensional and jagged arrays, nested containers, and delegates/events; why properties are not serialized like fields; when [SerializeReference] is useful; how renaming fields can break saved data; and why Unity serialization is not the same as a game save system.