Unityのパッケージのバージョン変更について

今日は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)

burstの1.8.3をダウンロードするように追記する

また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でも同じだと思われる。)

取り合えず簡単に調べてみた。案外手間取ったのが悔しい。

コメント

タイトルとURLをコピーしました