![[Unity]ArgumentException:Path is emptyが発生したときの対処法](https://ukonn.net/wp-content/uploads/2018/11/ArgumentException_Pathisempty-min.png)
どうも、どうも、どうも、右近でございます。
丸二日戦って、やっとこさ倒すことができた忌々しいエラー
「ArgumentException:Path is empty」の対処法を冷めないうちに記事にしておこうとおもいます。
※Unity 2018.2.9f1使用
1.この記事が役立ちそうな人の条件
・Addressables Asset Systemを利用している!
↑私の場合、こいつが「ArgumentException:Path is empty」を発生させていました。
2.エラー内容(ArgumentException:Path is empty)
改めまして、今回倒したエラーの紹介です。
名前:「ArgumentException:Path is empty」
コンソール画像:
エラー内容全文:
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileStream.cs:209)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean isAsync, Boolean anonymous)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess)
UnityEditor.Build.Pipeline.Utilities.HashingMethods.CalculateFile (System.String filePath) (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Utilities/HashingMethods.cs:294)
UnityEditor.Build.Pipeline.Utilities.BuildCache.GetCacheEntry (GUID asset) (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Utilities/BuildCache.cs:68)
UnityEditor.Build.Pipeline.Utilities.BuildCache.GetUpdatedCacheEntry (CacheEntry entry) (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Utilities/BuildCache.cs:104)
UnityEditor.Build.Pipeline.Utilities.BuildCache.NeedsRebuild (UnityEditor.Build.Pipeline.Utilities.CachedInfo info) (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Utilities/BuildCache.cs:116)
UnityEditor.Build.Pipeline.Utilities.BuildCache.LoadCachedData (IList
1 entries, IList
1& cachedInfos) (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Utilities/BuildCache.cs:258)UnityEditor.Build.Pipeline.Tasks.CalculateAssetDependencyData.Run () (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Tasks/CalculateAssetDependencyData.cs:63)
UnityEditor.Build.Pipeline.BuildTasksRunner.Run (IList`1 pipeline, IBuildContext context) (at C:/Users/user/AppData/Local/Unity/cache/packages/packages.unity.com/com.unity.scriptablebuildpipeline@1.0.1-preview/Editor/Shared/BuildTasksRunner.cs:50)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
・・・改めて見ても忌々しいぃぃ。
3.解決策(倒し方)
倒し方はいたって簡単!!
「Addressables Asset System」をアップデートする、です!!
(「ArgumentException:Path is empty」の原因が「Addressables Asset System」の場合)
上にも書きましたが、私の場合、「ArgumentException:Path is empty」が発生する原因が「Addressables Asset System」だったので、
「Addressables Asset System」をアップデートすると倒せました。
(もともと使っていたのが「ver0.3.5」で「ver0.4.8」にアップデートしました。)
以下はアップデートの方法になります。
1.「Unityエディタ」画面から、「window」→「Package Manager」をクリックする。
2.「Addressables System」を選択し、「Up to date」をクリックする。すると最新の「Addressables System」にアップデートされる。
※↓の画像はすでにアップデートした後の画像なので「Up to date」ボタンが非活性になっていますが、アップデートできるversionがあるなら活性になっているはずです。
アップデートが終わりましたら、「ArgumentException:Path is empty」が発生した行動をとってみてください。
(私の場合、ビルドしようとしたら発生し、その後プログラムを実行しても発生するようになっていたと思います。)
もしエラーが発生しなくなっていたら、あなたの勝ちです!
4.考察
ここからは、何で「ArgumentException:Path is empty」が発生していたのかを考えたので一応書いておこうかと思います。
私の場合、という前置きから書かせていただきますが、「Path is empty」が発生した原因、
それはプロジェクト内に「StreamingAssets」フォルダが無かったから、ではないかと思っています。
といいますのも、「Addressable Assets System」をアップデートし、他のビルドエラーを倒した後ビルドすると、
いつの間にかプロジェクト内に「StreamingAssets」というフォルダができていたからです。
なんだこれと思い、色々調べてみると、「Addressable Assets System」を使うと自動生成されるものらしく、
その中にさらに自動生成されるファイルでなんやかんやするみたいです。(おそらくビルド後にAddressable Assets Systemが使うデータだと思います)
私の場合、アップデート前だとうまく「StreamingAssets」フォルダが自動生成されないという事象が起き、
アップデートするとその事象が治り、エラーも消えたということなでしょう。
もし、アップデートしても「StreamingAssets」フォルダが自動生成されない場合、最終手段として、
いったん「Addressable Assets System」を削除した後、再インストールするのもありだと、どこかの記事で読みましたので、
一応その方法もメモし、考察の締めとさせていただきます。
とっても簡単な「Addressable Assets System」再インストール方法:
1.「Packege Manager」から「Addressable System」を「Remove」する。
2.「あなたのプロジェクトファイル\Packages\manifest.json」から「manifest.json」をテキストエディタ(メモ帳とかでもおけ)で開き、下の一文をそのままコピペする。
3.その後Unityを開くと勝手に「Addressable Assets System」がインストールされると思います。
fa-paper-plane-oあとがき
お疲れ様です。
もし今回紹介した方法であなたの悩みが解決されたなら、これ幸いでございます。
もし、エラーが治らなかったら・・・、あなたがいつか勝つことを応援しておりますw
最後まで読んでいただき、心からの感謝を。