今日はUnityのパッケージの依存性を無理やり解決する方法のメモ書き。
今回起きた問題と経緯
今回Universal RPを用いたプロジェクトを新規生成し、そこにUnityのスタンダードアセットを導入しようとした。すると以下のようなエラーが出た。
理由が分からないので取り合えずGoogle検索に突っ込んでみたところ、C#コンパイラーのBurstのバージョンを1.8.2から1.8.3にしてね。というフォーラムが出てきた。
この時Burstのバージョンを見てみるとUniversal RPの依存解決によって1.8.2に設定されていた。(以下はスクリーンショットを撮り忘れたので解決後に撮影したもの。Burst 1.8.2がDependenciesに設定されている)
従って基本的に何もしなければBurst 1.8.2がダウンロードされてしまう。ではUniversal RPと同じくBurstをGUIからアップデート出来ないのかと思った、が出来なかった。これが今回の問題
manifest.jsonでアップデートする
結論を言うとmanifest.jsonに依存性解決によって解決されたパッケージ以外のパッケージのバージョンが記載されているので、それを修正すれば良いらしい。(参考: https://docs.unity3d.com/ja/2019.4/Manual/upm-dependencies.html)
またmanifest.jsonに書かれたパッケージの依存性を解決したものがpackage-lock.jsonに保存される。(あくまでもmanifest.jsonに書かれたものから決定的アルゴリズムによって計算する。そのためpackage-lock.jsonを書き換えてもUnityによって上書きされてしまうので気を付けて。参考: https://docs.unity3d.com/ja/current/Manual/upm-conflicts-auto.html)
これらのファイルはプロジェクトファイル内のPackagesフォルダ内に保存されている。Explorerなどで確認してみて欲しい。
このpackage-lock.jsonはnpmなどのパッケージシステムの用にパッケージバージョンの計算を省くためにある。(npmの場合は別環境で再現できるようにするために存在している。これはUnityでも同じだと思われる。)
取り合えず簡単に調べてみた。案外手間取ったのが悔しい。
コメント