I have a class derived from ScriptableObject, and members are getting serialized when I don't want them to be.

I am using a ScriptableObject class for an object that I don’t want to be attached to a GameObject in the scene. Some fields change on objects of this type during gameplay, and then persist over different launches of the game, or loads of the level, and I don’t want that!

The members that are being serialized are private and are marked as [System.NonSerialized], but the behavior persists. What else can I do to prevent this from happening?

As a hack you can reassign values of the fields that you want to be reset/calculated each time in OnEnable of the script.