If it is a custom class, make sure you mark the class as Serializable
xxxxxxxxxx
[System.Serializable]
public class MySerializableClass {}
Mark variable with HideInInspector (and SerializeField if private)
xxxxxxxxxx
[SerializeField, HideInInspector] private MySerializableClass myVar;
and in the bottom of the custom inspector's OnInspectorGui() method, include:
xxxxxxxxxx
[CustomEditor(typeof(MySerializableCLass))]
public class MyClassEditor : Editor
{
public override void OnInspectorGUI()
{
// your code here...
if (GUI.changed)
{
EditorUtility.SetDirty(castedTarget);
EditorSceneManager.MarkSceneDirty(castedTarget.gameObject.scene);
}
}
}