OnBeforeSerialize is called twice before OnAfterDeserialize

I’m trying to control the serialization of a custom class I’ve created, but it seems the method
OnBeforeSerialize() is called twice before OnAfterDeserialize() (found out using Debug.Log calls).

Also, the second time it’s getting called, the fields are all null, hence my own serialization result in empty values, which then I can’t deserialize.

Psuedocode:

[Serializable] public class MyClass : ISerializationCallbackReceiver { public void OnBeforeSerialize() { Debug.Log("OnBeforeSerialize start: " + ""); } public void OnAfterDeserialize() { Debug.Log("OnAfterDeserialize end"); } }

p.s.
Sorry if the code doesn’t look good. It looks fine in the preview, and then in the post it self the lines won’t break. Not really sure how to post it correctly.

How do you instantiate the class?

don’t do this:

[SerializeField]
MyClass _instance = new MyClass();

also this might help

IgorAherne - The class has no relation to the unity framework, so it’s not a component (hence no MonoBehaviour) nor a scriptableobject.

How do I instantiate it then?

p.s.
The class MyClass is instantiated using new, however it exists inside a component which is attached to a game object. If it matters.