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.
Additional resources: 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; } }