Unity2019移行時に発生するエラーの解消方法について (Clear Cache and PlayerPrefs)

この記事は約4分で読めます。

これはUnity2019に限りませんが、ほとんどの場合でUnityのアップグレード時に発生します。

アバターが壊れていることはごくまれ

Unity2019移行時、手順を踏んで移行したのにSDKのウィンドウが表示されずに怖がる人が多数います。
このときアバター入りのプロジェクトが壊れたのではという人が多いですが、アバター自体が壊れてしまったということはごくまれです。

どうして起きるの?何が原因なの?

現象が発生すると、メニューバーのVRChat SDKをクリックしてもUtilities→Clear Cache and PlayerPrefsしか表示されない状態になっています。
これはSDKが壊れたのではなく、いずれかのエディタ拡張がUnity2019に対応しておらずにビルドエラーを発生させているものです。

エディタ拡張はC#で記述されたプログラムですので、そのプログラム自体にUnity2019に対応していない記述があるとUnityはエラーを発生させます。

解決するには?

解決するには一般的なIDEでの方法と同じです。プログラミング時にコンパイルエラーが発生した場合と解決策は同じです。

IDEとはIntegrated Development Environment(統合開発環境)の略で、ここではプログラミングに使用する開発ソフトウェアのことであると思ってください。
一例を挙げると、Visual Studioがあります。

問題を引き起こしているエディタ拡張を見つける

Unityでエラーが発生すると、そのエラーはConsoleに表示されます。
これは一般的なIDEと同じ動作です。

このConsoleに表示されている内容が問題を発見するための重要な鍵です。

表示されているメッセージにはいくつか重大度に応じてレベルがありますが、今回は赤い感嘆符で示される「エラー」に着目します。
黄色い「警告」や白色の「情報」は今回は直接関係ありません。

エディタ拡張に直接関係のないエラーが表示されていることがありますが、症状が発生している場合はほとんどの場合でここにエラーが表示されています。

エラーメッセージに着目してください。

たとえば、次のようなエラーメッセージが表示されています。

Assets\VirtualLens2\Core\Editor\PackedStates.cs(5,32): error CS0234: The type or namespace name 'UIElements' does not exist in the namespace 'UnityEngine.Experimental' (are you missing an assembly reference?)

error CSで始まる記述に着目してください。これは、エディタ拡張のコードにUnity2019に対応していない記述が残っているか、または記述に誤りがある場合に発生していることを示します。

今回の例では古いVirtualLensのエディタ拡張がエラーを生じさせていました。エラーメッセージの左側に表示されているファイル名のファイルの拡張子を変更するかファイルを別の場所に移動させてください。
今回の例では、 Assets\VirtualLens2\Core\Editor\PackedStates.csの拡張子を変更します。

複数のエラーが表示されている場合は、関連するすべてのエラーが消えるまで操作を繰り返してください。

対応後にすること

Unity2019に対応していないエディタ拡張を取り除きました。エディタは動作するようになりましたが、このままではそのエディタ拡張を使用できません。

技術的にはソースコードをUnity2019に対応するように修正すれば解決します。
しかし、エディタ拡張を動作するように修正するのは難しいため、現実的には次の2つのいずれかの方法を取ることになります。

Unity2019に対応したバージョンのエディタ拡張を手に入れる

今回のVirtualLensの例はこちらに該当します。
作者の方からUnity2019に対応した、新しいバージョンのエディタ拡張が公開されていることがあります。

最新版をダウンロードし、更新することで引き続き使用できます。

諦める (または類似の機能を持つエディタ拡張を探す)

Unity2019に対応する見込みのないエディタ拡張がある場合は、諦めるほかありません。
ただし、代替となる製品が公開されていることもあるため、Unity2019に対応した同じような機能を持つエディタ拡張を探すのも1つの手段です。

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