Unityを触り始めてから1年ちょっとが経過したのですが、今までUnityエディタのアップグレードをしていなかったことをここに懺悔します。アーメン。
というわけで、Unityエディタを 2022.3 から 6.2(6000.2) にアップグレードして、今までに作成したプロジェクトもUnity 6.2で開けるようにしてみました。
手順
ご存知かと思いますが、Unityエディタは今インストールされているものをアップグレードするということができません。古いバージョンを残したまま、新しいバージョンのUnityエディタをもう1個インストールすることになります。
でーもー、Unityエディタってサイズがでかいんですよね。1個20GBくらいあります。これを何個もインストールするなんて、アラブの富豪にしかできないんです(断言)。
というわけで、以下の手順でUnityエディタのアップグレードをしたいと思います。
- 最新版のUnityエディタをインストールする。
- 古いUnityエディタをアンインストールする。
- 既存のプロジェクトを最新版のUnityエディタに対応させる。
プロジェクトのアップグレードで何らかのトラブルが発生する匂いがします。ワクワクしますね。
新しいUnityエディタのインストール
Unity Hubを起動して、サイドバーの「インストール」を選択します。そして右上の「エディターをインストール」ボタンを押します。

「Unityエディターをインストール」画面が開くので、インストールするバージョンの「インストール」ボタンを押します。ここでは Unity 6.2 をインストールします。

次の画面では、追加するモジュールを選択します。ここではプラットフォームのAndroid, iOS, Webを選択しました。必要最小限です。ディスク容量がカツカツなので!必要ならばあとから追加することもできます。
「続行する」ボタンを押します。

Androidソフトウェア開発キットのライセンス規約が表示されるので「上記の利用規約を理解し、同意します」にチェックを入れて「インストール」ボタンを押します。

理解してほしいなら日本語で書けよ。なんて言いません。私、オトナなので。
インストールが始まります。20分弱で終わりました。ここでいう「20分弱」とは18分とか19分のことです。最近の若者は20分弱というと21分とか22分のことを指すと思うらしいです。気持ち悪いですね。

古いUnityエディタのアンインストール
無事に最新版Unityエディタがインストールできたので、古いバージョンのUnityエディタをアンインストールします。
Unity Hubのサイドバーの「インストール」で、削除したいバージョンのUnityの「管理 > アンインストール」を選択します。

以上で古いUnityエディタのアンインストールは完了です。
プロジェクトのアップグレード
Unity Hubのプロジェクトリストを見ると、黄色いおにぎりが並んでいます。これは、このプロジェクトに対応するバージョンのUnityエディタが見つからないよという警告です。そりゃそうです。さっきアンインストールしたからね。

これらのプロジェクトを新しいUnityエディタに対応させましょう。
黄色いおにぎりが表示されている状態でプロジェクトを開こうとすると、警告が表示されます。ここでプロジェクトに対応したバージョンのエディタをインストールするか、インストール済みのエディタで無理やり開くかを選択します。
今回はインストール済みのバージョンを選択して「6000.2.2f1 で開く」ボタンをクリックします。

確認画面が表示されます。
これを読むと、必要に応じてスクリプトの変更を自動でしてくれるっぽいですね。親切設計。

ここからはUnityエディタのダイアログなので英語になります(英語版のUnityエディタを使っているため)。
Unityエディタの規約へのリンクが表示されるので、チェックボックスをチェックして「Accept and Continue」ボタンを押します。

あなたは、このバージョンの Unity の Unity エディターのソフトウェア規約に同意していません。 続行するには、同意してください。
Unity エディターのソフトウェア規約
お客様による Unity エディターソフトウェアの使用は、Unity と別途合意している場合を除き、Unity サービス規約 (https://unity3d.com/legal/terms-of-service) を補完し、それに組み込まれている Unity エディターソフトウェア規約 (https://unity.com/legal/editor-terms-of-service/software) に従うものとします。
「同意して続行」をクリックするか、Unity エディターをインストールして使用することにより、お客様は Unity エディターソフトウェア規約および Unity サービス規約を読み、理解したことを認め、それらに拘束されることに同意します。
プロジェクトのアップグレードに関するダイアログが表示されるので「Continue」をクリックします。

プロジェクトのアップグレードが必要です
このプロジェクトは、現在使用している Unity のバージョン(6000.2.2f1)よりも古いバージョン(2022.3.36f1)で保存されています。
Continue(続行)を選択すると、プロジェクトが自動的にバージョン 6000.2.2f1 にアップグレードされます。
これにより、アセットの再インポートが発生する可能性があります。また、プロジェクト内のパッケージやその他の設定もアップグレードされる場合があります。
アップグレードの詳細については、以下の場所にあるエディターのログを参照してください。 /Users/********/Library/Logs/Unity/Editor.log
以下のダイアログが出ました。「Enter Safe Mode」をクリックして、セーフモードでプロジェクトを開きます。なんだなんだ、怖いよ。

セーフモードに入りますか?
開こうとしているプロジェクトにコンパイルエラーが含まれています。
セーフモードに入ると、プロジェクトの残りの部分がインポートされるのを待つことなく、これらのエラーを解決できます。
Ignore (無視)を選択した場合(非推奨)、プロジェクトのインポートは続行されますが、破損した、または使用できない状態になる可能性があります。
セーフモードでプロジェクトが開きました。コンソールでエラーを確認してみると、すべてTextMesh Pro関連のエラーでした。TextMesh Proをインポートし直せば解消しそうです。
というわけで、右上の「Exit Safe Mode」をクリックして、セーフモードから抜けます。

脅しのダイアログが表示されますが、気にせず「Exit Anyway」します。

セーフモードを終了します
本当に終了してもよろしいですか?
コンパイルエラーが残ったままセーフモードを終了すると、プロジェクトが不完全な状態になったり、破損したりする可能性があります。たとえば、プロジェクト内のパッケージがロードに失敗したり、アセットが正しくインポートされなかったりすることがあります。
セーフモードを抜けると、TextMesh Proを再インポートするためのダイアログが表示されました。気が利くじゃん。
というわけで「Import TMP Essentials」と「Import TMP Examples & Extras」をクリックして再インポートします。

TMP Essentials (TMPの必須アセット)
TextMesh Pro の必須アセットが更新されました。正常に機能させるには、これらのアセットをプロジェクトに再インポートする必要があります。更新されたアセットは、プロジェクト内の「TextMesh Pro」フォルダのルートに配置されます。
[Import TMP Essentials]
TMP Examples & Extras (TMPのサンプルと追加アセット)
この「Examples & Extras」パッケージには、TextMesh Pro の強力な機能をより簡単に発見し、学習するための追加のアセットとサンプルが含まれています。これらの追加アセットは、TMP の必須アセットと同じフォルダに配置されます。
[Import TMP Examples & Extras]
TMP関連のエラーは出なくなりました。
以上でプロジェクトのアップグレードは完了です。楽勝でしたね。
その他のダイアログ
上記は私が初めてUnityで作った紙芝居アプリのアップグレード顛末記で、エラーはTMP関連だけでした。以下で他のプロジェクトをアップグレードしたときに表示されたダイアログボックスを紹介します。
スクリプト更新の同意
以下のようなダイアログが表示されることが何度かありました。スクリプトを自動的に更新してくれているみたいですね。

スクリプト更新の同意
このプロジェクトのいくつかのソースファイルは、変更された API を参照しています。これらは自動的に更新できます。更新する前に、プロジェクトのバックアップを作成することをお勧めします。これらのファイルを更新しますか?
- Assets/Scripts/BallController.cs
- Assets/Scripts/ItemController.cs
[これらのファイル、および今後見つかる可能性のある他のファイルもすべて更新します]
[更新しません]
[リストにあるこれらのファイルのみを更新します]
で、どこが更新されたのか確認したところ、Rigidbody.velocity
がRigidbody.lenearVelocity
に修正されていました。変数名が変わったんですね。
URPマテリアルのアップグレード
URPを使ったプロジェクトで以下の警告が出ました。

URP マテリアルのアップグレード
プロジェクト内のマテリアルは、Universal Render Pipeline (URP) の古いバージョンを使用して作成されています。Unity は、現在使用しているバージョンの URP と互換性を持たせるために、これらのマテリアルをアップグレードする必要があります。Unity は、プロジェクト内のすべてのマテリアルを再インポートし、アップグレードされたマテリアルをディスクに保存し、必要に応じてソース管理でチェックアウトします。
詳細については、URP ドキュメントの「マテリアルアップグレードガイド」を参照してください。
これは自動修正してくれないみたいです。Unityエディタのほうで何かしないといけないみたいだけど、どうすればいいんだ。そもそもURPってなんだっけ。
ゲームは警告が出るもののちゃんと動くので、放っておこう。
さいごに
というわけで、思ったよりも楽勝でした。いえい。
でわでわ
コメント