naichi's lab

3日後の自分(他人)への書き置き

PlayFab Editor Extensionsにログインしているとエディタ実行時に「ArgumentException: The specified path is not of a legal form (empty).」というエラーが出る

よくわかんないエラーに遭遇したからメモ。

環境

  • Unity 2019.2.17f1
  • PlayFab UnityEditorExtensions version 2.79
    • GitHubから最新バージョンをインストールしたけどエディタ上の表示は2.67になってる...

症状

Unityエディタ上で実行するとこんなエラーが出て困った

ArgumentException: The specified path is not of a legal form (empty).

エラー全文

ArgumentException: The specified path is not of a legal form (empty).
System.IO.Path.InsecureGetFullPath (System.String path) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.IO.Path.GetFullPathInternal (System.String path) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.IO.FileInfo.Init (System.String fileName, System.Boolean checkHost) (at <567df3e0919241ba98db88bec4c6696f>:0)
System.IO.FileInfo..ctor (System.String fileName) (at <567df3e0919241ba98db88bec4c6696f>:0)
(wrapper remoting-invoke-with-check) System.IO.FileInfo..ctor(string)
Packages.Rider.Editor.ProjectGeneration.ShouldSyncOnReimportedAsset (System.String asset) (at Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs:211)
System.Linq.Enumerable.Any[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] predicate) (at <351e49e2a5bf4fd6beabb458ce2255f3>:0)
Packages.Rider.Editor.ProjectGeneration.HasFilesBeenModified (System.Collections.Generic.IEnumerable`1[T] affectedFiles, System.Collections.Generic.IEnumerable`1[T] reimportedFiles) (at Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs:206)
Packages.Rider.Editor.ProjectGeneration.SyncIfNeeded (System.Collections.Generic.IEnumerable`1[T] affectedFiles, System.Collections.Generic.IEnumerable`1[T] reimportedFiles) (at Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/ProjectGeneration/ProjectGeneration.cs:195)
Packages.Rider.Editor.RiderScriptEditor.SyncIfNeeded (System.String[] addedFiles, System.String[] deletedFiles, System.String[] movedFiles, System.String[] movedFromFiles, System.String[] importedFiles) (at Library/PackageCache/com.unity.ide.rider@1.1.4/Rider/Editor/RiderScriptEditor.cs:229)
UnityEditor.CodeEditorProjectSync.PostprocessSyncProject (System.String[] importedAssets, System.String[] addedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromAssetPaths) (at /Users/builduser/buildslave/unity/build/Editor/Mono/CodeEditor/CodeEditorProjectSync.cs:35)
UnityEditor.AssetPostprocessingInternal.PostprocessAllAssets (System.String[] importedAssets, System.String[] addedAssets, System.String[] deletedAssets, System.String[] movedAssets, System.String[] movedFromPathAssets) (at /Users/builduser/buildslave/unity/build/Editor/Mono/AssetPostprocessor.cs:154)
UnityEditor.AssetDatabase:SaveAssets()
PlayFab.PfEditor.PlayFabEditorPrefsSO:Save() (at Assets/PlayFabEditorExtensions/Editor/Scripts/Utils/PlayFabEditorPrefsSO.cs:48)
PlayFab.PfEditor.<>c:<RefreshStudiosList>b__12_0(GetStudiosResult) (at Assets/PlayFabEditorExtensions/Editor/Scripts/Utils/PlayFabEditorDataService.cs:205)
PlayFab.PfEditor.PlayFabEditorHttp:OnWwwSuccess(String, Action`1, Action`1, String) (at Assets/PlayFabEditorExtensions/Editor/Scripts/PlayFabEditorSDK/PlayFabEditorHttp.cs:124)
PlayFab.PfEditor.<>c__DisplayClass2_0`2:<MakeApiCall>b__0(String) (at Assets/PlayFabEditorExtensions/Editor/Scripts/PlayFabEditorSDK/PlayFabEditorHttp.cs:95)
PlayFab.PfEditor.<Post>d__7:MoveNext() (at Assets/PlayFabEditorExtensions/Editor/Scripts/PlayFabEditorSDK/PlayFabEditorHttp.cs:179)
PlayFab.PfEditor.EditorCoroutine:Update() (at Assets/PlayFabEditorExtensions/Editor/Scripts/Utils/EditorCoroutine.cs:103)
UnityEditor.EditorApplication:Internal_CallUpdateFunctions() (at /Users/builduser/buildslave/unity/build/Editor/Mono/EditorApplication.cs:303)

スタックトレースの下の方みるとなんかPlayFabのEditorExtensionが悪さしてるっぽい。

// PlayFabEditorPrefsSO.cs
public static void Save()
{
    EditorUtility.SetDirty(_instance);
    AssetDatabase.SaveAssets(); //これが呼ばれてエラーしてる
}

やったこと

  • PlayFab UnityEditorExtensionsを更新
    • これ押すだけ
    • f:id:naichilab:20200129000019p:plain:w320
  • そうするとログイン情報が一度消える
    • f:id:naichilab:20200129000100p:plain:w320
  • この状態ならエディタ再生してもエラーしない。
  • 逆に一度ログインした状態( PlayFabEditorPrefsSO に値が入る)だとエラーする。
    • f:id:naichilab:20200129000354p:plain:w320

なーにこれ。

PlayFabEditorPrefsSOのSaveメソッド、7箇所から参照されてて実行時にどれが呼ばれてるのかもよく分からない。

あと空にしたままでも、実行してPlayFabログインとかは問題なくできるようだし、ログイン先の情報とかはどこに保存されているんだ・・・

追記

PlayFab Editor Extensionsの画面を開いているとこのエラー出るという情報を教えていただきました!

空にせずともウィンドウ閉じるだけで大丈夫なようです!!