The NonSerialized attribute marks a variable to not be serialized.
Apply to public fields to prevent Unity from serializing the field and displaying it in the Inspector.
Apply to a private field to stop the field being serialized during a hot reload operation, such as after an assembly is recompiled, or during a domain reload operation before entering Play mode.
For more information on serialization, see Script Serialization.
See Also: HideInInspector, SerializeField.
class Test
{
// p will not be shown in the Inspector or serialized
[System.NonSerialized]
public int p = 5;
// neverSerializeMe will never be serialized, even during an hot reload.
[System.NonSerialized]
private int neverSerializeMe;
// The backing field for NeverSerializedProperty property will never be serialized,
// even during a hot reload
[field: System.NonSerialized]
public int NeverSerializedProperty { get; set; }
}