Unity2019移行ガイド

先日、オープンベータ版にてUnity2019の対応が始まり、同時にUnity2018からUnity2019への移行手順が公開されました

当ガイドは暫定版であり、オープンベータ版から正式版にUnity2019が降りてきた際に手順などが一部変更される場合がありますので予めご了承ください。
可能であれば、最新の移行手順を公式サイトなどでご確認ください。

プロジェクトのバックアップを取る

まずは、Unity2018で作成していたプロジェクトのバックアップを作ります。
バックアップは必ずしてください。

フォルダごとコピーすることをオススメしますが、容量が肥大化する可能性もあるためストレージの残量に余裕がない方は移行予定のプロジェクトのみコピーします。

UnityHubに Unity2019.4.28f1 をインストールする

インストールするUnityのバージョンは公式サイトに記載があります。

当記事を執筆時点ではUnity2019.4.28f1となっておりますので、こちらをUnityHubにインストールします。

「Unity Hub」のセクション最下部にある「Click here to install the current version of Unity via Unity Hub」をクリックすると、VRChatが指定するUnityのバージョンがUnity Hubにインストールされます。

「Unity バージョンを加える」というウィンドウがUnity Hubで立ち上がりますので、「Android Build Support」のチェックを入れて右下の「INSTALL」をクリックします。

すると、「インストール」画面で選択したUnityのバージョンのインストールが開始されますのでインストールが終わるまで気長に待ちましょう。

最新のVRCSDKを入手する

「Unity2018で作成されたVRCSDK3-Avatar」のアバタープロジェクトを移行する場合は最新の「VRCSDK3-Avatar」を、「Unity2018で作成されたVRCSDK2」のプロジェクトを移行する場合は最新の「VRCSDK2」をダウンロードしておきます。
公式サイトの「Download」ページからダウンロードできます。

今回は「Unity2018で作成されたVRCSDK3-Avatar」のアバタープロジェクトを移行します。

Unity2018で開いて、最新のVRCSDKを適用する(VRCSDK2またはVRCSDK3-Avatarのみ)

Unity2019で開く前に、移行予定のプロジェクトをUnity2018で開いて、最新のVRCSDKをインポートします。
「VRCSDK3-World」で作成されたワールドデータは、Unity2019へのアップデートが終わった後にVRCSDKをインポートしますのでご注意ください。

「Import Unity Package」のウィンドウが出たら、「Import」でインポートします。

空のSceneを作成する

最新のVRCSDKをインポートしたら、空のシーンを作成します。
UdonSharpを使用している場合は必ずこの手順を踏んでください。

「Project」タブから「Scene」を選択して、新しい空のシーンを作成します。

新しい空のシーン(上図の場合は「New Scene」)を開いて、ヒエラルキー(Hierarchy)に表示されていることを確認してください。

新しい空のシーンを開いた状態で、Unity2018を終了してください。

アバターなどでUnity Clothが使われている場合

アバターのスカートなどで「Unity Cloth」を使用している場合は更に手順が必要になります。

Clothコンポーネントを持つすべてのSkinnedMeshRendererについて、メッシュスロットを見つけ、[プロジェクト]タブを開き、メッシュボックスの白い領域をクリックして、プロジェクトアセットのメッシュを強調表示します。おそらくFBXモデル内のメッシュになります。ハイライトされたメッシュを選択し、Ctrl-Dを押してメッシュアセットを複製します。次に、複製したメッシュをSkinnedMeshRendererのメッシュスロットにドラッグします。

プロジェクトをUnity2019にアップグレードする

いよいよアップグレードを行いますが、途中で絶対にVRCSDKの種類を変更しないでください。
例えば、「VRCSDK2」で作ったプロジェクトをアップグレードの途中で「VRCSDK3-Avatar」などに変更しないでください。

プロジェクトをUnity Hubに追加して開く

Unity2019移行用のコピーしたプロジェクトをUnity Hubに追加します。

「リストに追加」からUnity2019へ移行するプロジェクトを選択し、「フォルダーの選択」をクリックします。

追加したプロジェクトはまだ「Unity2018」と紐づいているため、バージョンのプルダウンからUnity2019のバージョンを選択します。

「Unity バージョン」が「2019.4.28f1」になっていることを確認して、プロジェクトをクリックして開きます。

「プロジェクトを新しいバージョンの Unity にアップグレードしますか?」という確認画面が出ますので、右下の「確認」ボタンを押して操作を続行します。

アセットデータベースのバージョンを2にアップグレードするかどうかを聞かれるので「Yes」を押して続行します。

場合によっては「Windows セキュリティの重要な警告」というウィンドウが出ますので「アクセスを許可する(A)」をクリックして続行します。

「Importing」というプログレスバーが表示され、Unity2019への移行が行われます。
作業が完了するまで気長に待ちます。

人によって画面の配置や配色等が異なる場合がありますが、Unity2019の画面が立ち上がればOKです。

元のシーン(Scene)を開く

ここまでで、特に不具合なく画面が開いた場合は元のシーンを開いて作業可能です。

Questビルド(Androidビルド)のプロジェクトを移行した場合は、いくつか不具合が発生しますので、更に下記の追加の手順を踏んでください。

VRCSDK3-Worldをインポートする(VRCSDK3-Worldのみ)

プロジェクトファイルが「VRCSDK3-World」で作られていた場合は、このタイミングで最新のVRCSDK3-Worldをインポートします。

通常のカスタムパッケージのインポートと同じようにインポートしてください。

Questビルドの場合はライブラリフォルダーを削除する

Questビルドのプロジェクトでは、移行時にエラーが発生する可能性がありますので、エラーが発生していた場合は以下の手順を行ってみてください。

Unity2019を一旦閉じます。
移行手順を行ったUnity2019のプロジェクトフォルダーをエクスプローラーで開きます。

(殆どの場合は「Assets」の次に表示される)「Library」のフォルダーを削除します。

※「Library」フォルダーの削除は、必ずUnity2019で開いた後に行ってください
 絶対にUnityによって2019への移行ビルドが行われる前に削除しないでください。

削除が完了したら、再びUnity2019でプロジェクトを開きます。

そうすると、もう一度アセットデータベースのバージョンを2にするか聞かれるので「Yes」を押して続行します。
もう一度プロジェクトのビルドが入るので、気長に待ちます。

Unity2019が立ち上がって、コンソール(Console)にエラー(赤い警告マーク)が出ていなければ問題ありません。

黄色い警告マークが大量に出ている場合は「Clear」を押してください。
移行に成功している場合はクリア後にはエラーが出ない場合が多いです。
もしクリアした後にエラーが出ている場合はFBXなどにエラーが出ている可能性があります。
(特にシェーダー関係)

VRChatにアップロードする

ここまでくれば、あとはデータをVRChatにアップロードするだけです。

※可能であればBlueprint IDを削除し新規アバターとしてアップデートし、
 Unity2018のデータと分けておくことをオススメします。

当記事を執筆時点ではまだオープンベータであり正式版ではないため、「2018.4.20f1を使用してください」と出ますが、アップロードは出来ますので「Build」タブを開きます。

「Build & Publish for Windows」を押すと、エラーが出ていなければアップロード画面に移行します。
※Androidビルドで移行した場合、Libraryフォルダーの削除をした場合はWindowsビルドに切り替わります。

※基本的なアップロード方法は従来と変わりませんので、名前や説明を入れて「Upload」を押します。

「Update Complete!」が表示されれば完了です。お疲れ様でした。
Quest対応アップロードなどは従来通り行えますので、こちらを参考にしてください