void LoadDataEditor()
        {
            PersistentDataSystem persistentData = ((PersistentDataSystem)target);

            GUILayout.BeginVertical(EditorStyles.textArea);
            GUILayout.Space(2);
            GUIStyle option = new GUIStyle();

            option.alignment = TextAnchor.MiddleCenter;
            option.fontSize  = 15;
            option.fontStyle = FontStyle.Bold;
            GUILayout.Label("LOAD", option);
            GUILayout.Space(20);

            option.fontSize = 10;
            GUILayout.Label("Player", option);
            GUILayout.Space(5);

            if (persistentData.awakeLoadMode == PersistentDataSystem.AwakeLoadMode.SPECIFIC_CLASS && GUILayout.Button("Load specific player class data"))
            {
                persistentData.LoadClass(persistentData.classToLoad);
            }

            GUILayout.Space(2);
            if (GUILayout.Button("Load all player saved data"))
            {
                persistentData.LoadAllSavedData();
            }

            GUILayout.Space(2);
            if (GUILayout.Button("Erase all player saved data"))
            {
                persistentData.EraseAllSavedData();
            }

            GUILayout.Space(10);
            GUILayout.Label("Default", option);
            GUILayout.Space(5);

            if (persistentData.awakeLoadMode == PersistentDataSystem.AwakeLoadMode.SPECIFIC_CLASS && GUILayout.Button("Load specific default class data"))
            {
                persistentData.LoadClass(persistentData.classToLoad, PersistentDataSystem.PathMode.DEFAULT);
            }

            GUILayout.Space(2);
            if (GUILayout.Button("Load all default saved data"))
            {
                persistentData.LoadAllSavedData(PersistentDataSystem.PathMode.DEFAULT);
            }

            GUILayout.Space(2);
            if (GUILayout.Button("Erase all default saved data"))
            {
                persistentData.EraseAllSavedData(PersistentDataSystem.PathMode.DEFAULT);
                AssetDatabase.Refresh(ImportAssetOptions.Default);
            }

            GUILayout.EndVertical();
            GUILayout.Space(2);
        }
    public override void OnInspectorGUI()
    {
        PersistentDataSystem persistentData = ((PersistentDataSystem)target);

        persistentData.dataVersion = EditorGUILayout.TextField("DataVersion", persistentData.dataVersion);
        persistentData.autoSave    = EditorGUILayout.Toggle("AutoSave", persistentData.autoSave);

        persistentData.saveMode = (PersistentDataSystem.SaveMode)(EditorGUILayout.EnumPopup("SaveMode", persistentData.saveMode));

        EditorGUILayout.Space();
        PersistentDataSystem.LoadMode persistentDataSystemLoadMode = ((PersistentDataSystem.LoadMode)(serializedObject.FindProperty("loadAwakeMode").enumValueIndex));

        serializedObject.FindProperty("loadAwakeMode").enumValueIndex = (int)(PersistentDataSystem.LoadMode)(EditorGUILayout.EnumPopup("LoadAwakeMode", persistentDataSystemLoadMode));

        if (persistentDataSystemLoadMode == PersistentDataSystem.LoadMode.SPECIFIC_CLASS)
        {
            persistentData.classToLoad = (string[])EditorUtils.GenericField("Class to load", persistentData.classToLoad, typeof(string[]));
        }
        EditorGUILayout.Space();

        if (!persistentData.IsInit)
        {
            persistentData.Init();
        }

        GUILayout.Space(10);

        if (persistentData.savedDataDictionnary != null)
        {
            foreach (List <SavedData> sdList in persistentData.savedDataDictionnary.Values)
            {
                if (sdList != null && sdList.Count > 0)
                {
                    GUILayout.BeginVertical(EditorStyles.textArea);
                    GUILayout.Space(2);
                    GUIStyle option = new GUIStyle();
                    option.alignment = TextAnchor.MiddleCenter;
                    option.fontSize  = 15;
                    option.fontStyle = FontStyle.Bold;
                    GUILayout.Label(sdList[0].GetType().Name, option);
                    GUILayout.Space(5);

                    foreach (SavedData sd in sdList)
                    {
                        sd.DisplayInspector();
                        GUILayout.Space(2);
                    }

                    GUILayout.EndVertical();
                    GUILayout.Space(2);
                }
            }

            if (persistentData.savedDataDictionnary.Count > 0 && GUILayout.Button("Save Data"))
            {
                persistentData.SaveAllData();
                Debug.Log("Data Saved in the Directory : " + persistentData.AutomaticSavedDataDirectoryPath);
            }
        }

        GUILayout.Space(2);
        if (persistentDataSystemLoadMode == PersistentDataSystem.LoadMode.SPECIFIC_CLASS && GUILayout.Button("Load specific class data"))
        {
            persistentData.LoadClass(persistentData.classToLoad);
        }

        GUILayout.Space(2);
        if (GUILayout.Button("Load all saved data"))
        {
            persistentData.LoadAllSavedData();
        }

        GUILayout.Space(2);
        if (GUILayout.Button("Unload saved data"))
        {
            persistentData.UnloadAllSavedData();
        }

        GUILayout.Space(2);
        if (GUILayout.Button("Erase all saved data"))
        {
            persistentData.EraseAllSavedData();
        }

        serializedObject.ApplyModifiedProperties();
    }