前書き
前回、Unity Asset Storeで2ドル均一のセールが開催されたことを記事にしましたが今回は、そのセールで購入したアセットを導入した際に発生したエラーについて書いていこうと思います。
アセットを入れたところエラー発生
今回インポートしたのは Elemental Spells Full Pack VFX というエフェクト系のアセットになります。
プロジェクトにインポートしようとしたところ、以下のようなポップアップが表示されました。

This Unity Package has Package Manager dependencies:
このUnityパッケージには、他のパッケージマネージャー経由でインストールされる依存関係があります。
こういったポップアップが出た場合は、何かしらトラブルが起きる予感がしますが、衝動買いの勢いのまま Install/Upgrade を選択してアセットを導入しました。
結果、Unityの起動時にエラーが発生し、Safe Modeで起動しても解消されない状態になってしまいました。アセットを削除しても改善せず、どうやらアセットに含まれていたパッケージのバージョンが原因のようです。

エラー内容の確認
Unityのコンソールログを確認してみると、以下のようなエラーが出ていました。
[08:13:53] An error occurred while resolving packages:
Project has invalid dependencies:
com.unity.shadergraph: Package [com.unity.shadergraph@14.0.10] cannot be found
このエラーは、com.unity.shadergraph@14.0.10 というパッケージが見つからないために発生しています。調べてみると、この Shader Graph 14.0.10 は Unity 2022.3.x(LTS) 系で使用されるバージョンでした。
で、現在自分が作っているGUN!GUN!!SURVIVEのUnityバージョンを見てみると

2021.3.5f1でかなり古いですね…。Unity 2021.3.x 系で使われる Shader Graph のバージョンは 12.1.x 系なので、バージョンの不一致がエラーの原因だったようです。
アセットのバージョンと依存パッケージ
今回のアセットに含まれる情報を確認してみると、開発環境として Unity 2022.3.22f1 が使用されていることがわかりました。さらに、manifest.json の内容を見ると、プロジェクトに導入される依存パッケージ(Shader Graphなど)も更新されることが分かります。


アセットの依存パッケージ(Shader Graph)が自動的に 14.0.10 に書き換えられてしまったことで、Unityが起動しなくなる状態になったようです。
対処法
アセットを削除しても Unity が起動できない状態が続いたため、原因となっている パッケージバージョンの修正を行いました。
Packages/manifest.jsonに対象のファイルがあるので以下のように manifest.json に記載された Shader Graph のバージョンを手動で修正しました。
・修正前
"com.unity.shadergraph": "14.0.10",
・修正後
"com.unity.shadergraph": "12.1.7",
修正後に Unity を再起動したところ、問題なくプロジェクトが立ち上がるようになりました。
まとめ
今回のエラーの原因と対応を振り返ると、以下の通りです。
- エラーの発生源であるアセットを削除
- エラーに表示された Shader Graph のバージョンと、自分の Unity バージョンの対応関係を確認
- Packages/manifest.json を開き、Shader Graph のバージョンを Unity に合ったものへ修正
これらの対応により、無事に Unity プロジェクトを復旧することができました。
アセットの衝動買いをすることで行き置いて制作中のプロジェクトにアセットを取り込みたくなりますが、アセットが対応している Unity バージョンや依存パッケージの情報を事前に確認することがとても大切です。
今回のようなトラブルを避けるためにも、「すぐ使いたい!」気持ちを少し抑えて、アセットの対応環境を確認してから導入(もしくは購入前にちゃんとバージョン情報を確認)して無駄なくアセットを使うようにしましょう!
コメント