見出し画像

VRChat: Unity2018→2019への移行時に注意すべき点を整理する

7/17 10:00頃追記:VRChat公式からの原文に追加されたStep2.5についての記述を追加しました。

8/5 8:00頃追記:正式にVRChatがUnity2019に移行したことに伴い、β版に関する内容を取り下げました。

 この記事は、VRChat公式が2021年7月16日に公開した "Migrating from 2018 LTS to 2019 LTS" という記事の内容を筆者が独自解釈し、その中で注意すべき点についてを中心に紹介するものです。
 この記事の内容はVRChat公式側が提供する情報以上の内容を提供するものではありません。書いてある内容の分かりづらい(かもしれない)点について補足説明をしますが、それ以外の書いていない内容や独自情報を紹介する記事ではありません

 よって、原文やそれを翻訳した資料を読んだだけで理解できるに越したことはないので、先にそれらにざっと目を通していただくことをお勧めします。それをしたうえで分からない点がある時だけ、この記事を参考にしてください。


【VRChat公式の提供する移行手順原文】

【有志が原文を非公式翻訳した資料】


で、結局何をすればいいの?

 やるべきことは、Unity2018のために作られたプロジェクトをUnity2019へ、中身が壊れないように移行することです。

 Unity2018と2019とでは、いくつかの機能が拡張・変更されています。そのため、Unity2018用のプロジェクトを何もせずに2019でも利用できるようにする……というのは困難です。適切な手順に従って、2018用のプロジェクトを2019用にアップグレードする必要があります。


具体的にはどうすればいいの?

手順は以下の通りです。

1. UnityHubをインストールする
2. Unity 2019の指定されたバージョンをインストールする(ここで確認
3. 移行したいUnity 2018のプロジェクトを丸ごとコピー&貼り付けで複製する(超重要)
4. アバター or SDK2のワールドを移行する場合はこのタイミングで、Unity 2018でプロジェクトを開き、Unity 2019用のVRCSDKをインポートする。
5. UdonSharpやClothを使用している場合公式ドキュメントのStep2.5に従い移行後に破損しないように対策する
6. 移行するプロジェクトをUnity Hubに追加する。
7. Unity Hubで移行するプロジェクトをUnity 2019で開く。
8. 画面の指示に従い、プロジェクトをUnity 2019用に更新する。
9. 更新が終わったら、アバターやワールドが入っているSceneを開く。
10. SDK3のワールドを移行する場合はこのタイミングで、Unity 2019用のVRCSDKをインポートする。

 この記事では、取り急ぎ躓きそうなポイントに絞って詳しく紹介していきます。
 UnityHubやUnity 2019のインストールについてはこの記事内では割愛します。Unity公式のマニュアルなどをご参照ください。


"プロジェクトのバックアップ" は "コピー&貼り付け" で実施する

 プロジェクトをバックアップする、といっても何をすればいいんだ?と思う方がいらっしゃるようです。しかし、何か特別なことをしなければならない訳ではありません。

 やるべきことは簡単です。普段 Unity 2018 で開いているプロジェクトフォルダを、コピーしてから同じ場所ですぐ貼り付けするだけです。つまり、今のプロジェクトと中身が全く同じフォルダをもう一つ用意します。

 今回のUnity 2019へのアップグレード手順は複雑なことを行うものではありません。ですが、やり方を間違ってしまうと、Unity 2018とUnity 2019のどちらでもプロジェクトが開けなくなってしまう可能性があります。こうなると、せっかく作ったプロジェクトは水の泡。Unity 2018側のデータをUnity 2019側に手作業で再現することすらできません。再起不能(リタイヤ)です。

 しかしその際、移行前に中身が全く同じフォルダをもう一つ用意していればどうでしょうか?片方のプロジェクトが壊れてしまっても、移行を試す前の中身のままのプロジェクトが残っているのでもう一度試したり、手作業でUnity 2018側の入力値を参考にUnity 2019側のプロジェクトを作成することができます。

※Gitでのバックアップを行っている方へ
 GitでUnity 2018のプロジェクトをバックアップしている方も、極力コピー&ペーストプロジェクトの完全な複製を用意するようにしてください。なぜなら、Unity 2019への移行により ".gitignore" で指定しがちなファイルやディレクトリが書き換わるからです。
 この状態でUnity 2019へ移行したプロジェクトの変更点をgitの機能でUnity 2018の状態に戻すと、gitがバージョン管理しているファイルはUnity 2018だが、そうではないファイルはUnity 2019のままという歪な状態になり、プロジェクトが壊れて修復不能になる原因となります。
 ".gitignore" で指定したファイルやディレクトリがプロジェクト破損の原因だった場合、プロジェクトを元に戻す手段はありません
 このことから、今回のようなバージョン移行の際は極力コピー&貼り付けでプロジェクトを複製することをお勧めします。

※Export packageでのバックアップは非推奨
 Export packageという方法でバックアップを取ることは、VRChat側が非推奨としています。かなり時間がかかるようですし、不具合の原因になるとしています。実際、Export packageではプロジェクトの中身すべてを万全な状態でバックアップすることはできません。


Unity 2019に対応しているVRCSDKはどこにあるの?

 2021年8月5日にVRChatの正式版がUnity2019に対応しました。いつも通りVRChatの公式サイトからSDKをダウンロードすればOKです。


SDK3のワールドだけ、VRCSDKをインポートすべきタイミングが違う

 先に紹介した手順の通り、SDK3で作成されたワールドのプロジェクトだけUnity 2019用のVRCSDKをインポートするタイミングが異なります。

 全てのアバターとSDK2のワールド用のプロジェクトは、プロジェクトをUnity 2019で開く前に予めUnity 2018でUnity 2019用のVRCSDKをインポートする必要があります。
 それに対して、SDK3のワールド用のプロジェクトに限り、プロジェクトをUnity 2019で開いた後にUnity 2019用のVRCSDKをインポートしなくてはいけません。

 この点を間違えると、前述のバックアップを行っていない場合はプロジェクトが修復不能になる可能性があります。適切なタイミングでVRCSDKをインポートしましょう。

(オープンベータ版のみ?)Unityバージョンの警告は無視してOK

 2021年7月16日現在、Unity 2019へプロジェクトを移行し終えてVRCSDKでアバターやワールドをアップロードしようとすると、Unityのバージョンに関する警告が表示されます。

スクリーンショット 2021-07-16 175422

 しかし、この警告は無視しても問題ありません。このまま Build & Test やBuild & Publish for Windows などを実行すれば、正常にプロジェクトをビルドしたりVRChatへアップロードすることができます。

困った時は:もう一度試す、それでもだめなら手作業で

 基本的にはVRChat公式が提供する手順に従えば問題なく移行できるはずです。しかし、途中や結果に問題が起きた場合は……とりあえず最初からもう一度やってみましょう。それでもダメならVRChat公式に問い合わせるか、新規にUnity 2019のプロジェクトを作成し、手作業で元のプロジェクトを再現することを試しましょう。

 Unity 2018から2019への仕様変更の際に使えなくなってしまう機能があり、それを使用しているツールやアセットなどが正しく動作しないために問題が発生している、ということもあり得ます。一つ一つのツールやアセットが正しく動作しているかどうかを確認し、原因が特定できた場合はその作者に問い合わせるのもよいでしょう。

暇ですが暇ではないので不定期投稿になってしまいますが、皆さんに納得して頂けるような記事を作成できるように日々精進していきます。