Every time the project is opened, the PlayFabDataMenu recreates a new PlayFabEditorPrefsSO asset as the Resource.LoadAll fails to get the existing on while the editor is still loading. This is only a noticeable issue if the PlayFab extension is moved out of the root Assets folder (which, I imagine, is probably most situations to meet company project standards).
The solution we used to fix this was to tag the asset with a Label and search the AssetDatabase for that Label when necessary. This seems to be more reliable than loading Resources as it works when the project is opened in editor. The changes to the Instance property in PlayFabEditorPrefsSO are as follows:
public static PlayFabEditorPrefsSO Instance { get { if (_instance != null) return _instance; var guids = AssetDatabase.FindAssets("l:PlayFabEditorPrefs"); if (guids.Length > 0) { _instance = AssetDatabase.LoadAssetAtPath( AssetDatabase.GUIDToAssetPath(guids[0]), typeof(PlayFabEditorPrefsSO)) as PlayFabEditorPrefsSO; } if (_instance != null) return _instance; if (!Directory.Exists(Path.Combine(Application.dataPath, "PlayFabEditorExtensions/Editor"))) Directory.CreateDirectory(Path.Combine(Application.dataPath, "PlayFabEditorExtensions/Editor")); _instance = CreateInstance<PlayFabEditorPrefsSO>(); AssetDatabase.CreateAsset(_instance, "Assets/PlayFabEditorExtensions/Editor/PlayFabEditorPrefsSO.asset"); AssetDatabase.SetLabels(_instance, new []{"PlayFabEditorPrefs"}); AssetDatabase.SaveAssets(); Debug.LogWarning("Created missing PlayFabEditorPrefsSO file"); return _instance; } }
Hope this helps someone, but even more, I hope this is taken on board and fixed in a later update :)