ワールドプロジェクトを VRCSDK2 から VRCSDK3-Udon に強制的にアップデートする方法
VRCSDK2とVRCSDK3は当然互換性はありません。したがって、VRCSDK2からVRCSDK3へ無理やりアップデートするとSDK2で作られたギミックは全て使用できません。とはいえ、セットアップ済みのライトデータやプレハブ、コライダーの設定などはUnity標準のものなのでそのまま使えるものがほとんどです。 この記事では、ギミックは全て再設定を覚悟したうえで、プロジェクトのVRCSDKを2から3-Udonにアップロードする方法を書きます。
執筆段階での環境
Unity 2018.4.20f1
VRCSDK2 : VRCSDK2-2020.10.28.15.58_Public
↓
VRCSDK3 : VRCSDK3-WORLD-2020.10.28.15.57_Public
安全な方法
使用しているアセット、シーンデータを全てUnityPackageにエクスポートして、VRCSDK3でセットアップした新たなプロジェクトファイルでインポートすれば、一応VRCSDK2からVRCSDK3へ移行できます。このほうが後述する方法よりも確実です。
この方法の欠点は、プロジェクトが巨大な場合UnityPackageのエクスポートに時間がかかる、またはGitでプロジェクトをバージョン管理していて、プロジェクトが変わってしまうと面倒という場合です。筆者の場合後者の理由でプロジェクトはそのままでVRCSDK2からVRCSDK3にアップロードしました。
逆にこのような理由がない限りはUnityPackageを介する方法をおすすめします。
アップデート手順
必ずバックアップをしてから行ってください!! 当記事を参考にアップデートに失敗し、プロジェクトが壊れても自己責任でお願いします。
1. VRCSDK2の削除
プロジェクトからVRCSDK2のファイルを削除します。プロジェクトは閉じた状態で、エクスプローラーから
Assets/VRCSDK
Assets/VRCSDK.meta
Assets/VRChat Examples
Assets/VRChat Examples.meta
の4つを削除します。
2. Scripting Define Symbolsの削除
プロジェクトをUnityで開きます。VRCSDK2に入っているVRCWorldなどのプレハブや、コンポーネントはMissing状態になると思います。先に削除しておくとよいです。
Edit
->Project Settings...
->Player
->Other Settings
の、Scripting Define Symbols
にVRC_SDK_VRCSDK2
と入力されていると思うので削除します。
Postprocessing Stack v2
など、インポートしているアセットによってはそのシンボルもありますが、こちらは削除しないようにします。
3. VRCSDK3のインポート
ここまで完了したら、VRCSDK3をインポートします。 インポートが完了したらSDK3へのアップデートは完了です。
あとは壊れてしまったギミックを頑張ってUdonで再実装しましょう・・・。
VRCSDK3アップデート作業で役に立つエディタ拡張
MomomaTools:MissingReferenceFinder
開いているScene上のSDKアップデート時にMissing状態になったオブジェクトを調べる際に便利。ただしこのエディタ拡張は、スクリプトのMissingは検出しないようだった。また、Missing Prefabなども検出しない。
MissingScriptFinder
【Unity】Missing なコンポーネントを検索できる「Missing Scripts Finder」紹介
https://baba-s.hatenablog.com/entry/2019/01/09/160000
こちらはスクリプトのMissingを検索してくれるエディタ拡張。機能しなくなったVRC_Trigger
などを探索する際にとても便利。