SDK2プロジェクトの移行
freeze
Trigger2to3のSDK2互換性を利用して、
もともとSDK2で作成されていたプロジェクトをSDK3に移行させるツール
「Convert2to3」を開発しています。
br
ただし、現在VPM版(UdonSharp ver1.x対応版)には対応できていません。
(永遠に不可能かもしれません)
br
現在はテスト運用中のため、Discord内でのみ配布しています。
下記の招待リンクから、どなたでもお試しいただけます。
br
br
ただし、テスト目的のため、結果の報告にご協力ください。
br
移行条件
SDK2で扱えて、SDK3で扱えないケースは数多く存在します。
そこを踏まえて、移行作業を検討してください。
br
Convert2to3の移行条件は、Trigger2to3で対応できる範囲内と、
SDK2とSDK3の間でインターフェースの相違が殆どなく、単純変換できるVRCSDKコンポーネントです。
具体的には、以下のコンポーネントです。
単純変換できるコンポーネント
VRC_SceneDescriptor | VRC_Pickup | VRC_ObjectSync | VRC_Station |
VRC_MirrorReflection(※1) | VRC_AvatarPedestal | VRC_PortalMarker | VRC_SpatialAudioSource |
VRC_UiShape | VRC_VisualDamage |
Trigger2to3で対応できるコンポーネント
VRC_Trigger(※2) | VRC_PlayerMods | VRC_PlayerAudioOverride | VRC_MidiNoteIn |
VRC_AudioBank | VRC_SceneResetPosition |
br
(※1)VRC_MirrorRefrectionは一部移行できないパラメータがあります
Mirror Resolution
Maximum Antialiasing
Custom Shader
br
(※2)対応できない機能も存在します。
対応範囲は、「VRC_Triggerとの差異」のページを参照してください。
br
また、SDK2コンポーネントを操作するボタンなどのUIイベントの変換は対応できていません。(検討中)
br
単純に移行できない代表例
・SpawnObjectで生成されたオブジェクトのUdonやPickupは正しく動作しません。ObjectPoolに切り替える必要があります。
・Unity Standard AssetsはSDK3で使用不可になっているため、これを利用しているギミックは動作しません。
・Video系のコンポーネントはSDK3にもありますが、単純変換できないため、現在のところConvert2to3の移行対象外です。
br
SDK2専用のツール等を利用している場合は、SDK3対応版や他のツールを探し、切り替えることを検討してください。
br
移行手順
1.
まず、移行したいプロジェクトのバックアップを取ってください。(何より大切!)
br
2.
プロジェクトは現在のVRChat適応版(Unity2019.4.31f)になっていることを前提としています。
もし古いバージョンの場合は、Unityアップグレード作業を先に行ってください。
br
3.
VRChat公式で、SDK3のWorlds、AvatarsのSDKを入手し、それぞれインポートしてください。
SDK2は入ったままでOKです。
ref
はい、Avatarsも必要です。機能は使用しませんが、Unity正常化のために必要です。
SDK2が共存しているプロジェクトでは、これがないとエラーになります。
br
インポート完了後、エラーが発生していないことを確認してください。
もし、エラーが発生している場合、Unity再起動を試みると解消する場合があります。
br
4.
次に、UdonSharpを入手し、インポートしてください。
インポート完了後、エラーが発生していないことを確認してください。
br
5.
Trigger2to3をインポートしてください。
br
6.
Convert2to3をインポートしてください。
br
7.
いよいよ実行ですが、その前にいったんConsoleを開き(一番下のバー、もしくは Window > General > Console)、
Clearボタンでログを消去してください。
実行時のログを見やすくするためです。
ref
br
8.
移行したいワールドのSceneを開き、上のメニューバーの「Tools > Convert2to3 > Add SDK3 Components」を選択すると、
SDK2のコンポーネントから変換されたSDK3のコンポーネントが追加されます。
ref
br
この時点でエラーが出たりしたら、バグの可能性が高いです。
ご報告ください。。
br
br
br
br
br
br
移行対象外のコンポーネントやVRC_Triggerのコマンドがある場合、ワーニング表示されます。
ref
br
GameObjectのInspectorを見てみると、
SDK2のコンポーネントの下にSDK3のコンポーネントやTrigger2to3が追加されていたりします。
br
ちなみに、SDK2のコンポーネントは「VRC_SceneDescriptor」のようにアンダーバーが付いているのに対し、
SDK3のコンポーネントは「VRC SceneDescriptor」のように、アンダーバーが付いていない名称となっています。
br
9.
変換状況をなんとなく確認したら、「Tools > Convert2to3 > Delete SDK2 Components」を実行してください。
SceneからSDK2のコンポーネントが削除されます。
ref
br
10.
Sceneの準備ができたとして、次はプロジェクトからSDK2を無くします。
その前にSceneを保存し、「File > New Scene」でSceneを閉じます。
ref
br
11.
お役御免のConvert2to3を削除します。
ref
br
12.
いったん、Trigger2to3、UdonSharp、VRCSDKの3つのフォルダを丸ごと削除します。
ref
br
13.
「Edit > Project Settings」を開き、「Player > Other Settings > Scripting Define Symbols」のところにある
「VRC_SDK_VRCSDK2;」の部分を消します。
br
※この項目はマウスで操作しようとするとうまく選択できないので、カーソルキーを使って項目を選択してください。
そして、項目を編集したら、Enterキーで反映してください。
そのままウィンドウを閉じるとキャンセルになるので注意してください。
br
br
14.
改めて、SDK3-Worldsをインポートします。
ref
br
このあとに、Consoleを確認し、
図のようなVRCSDK2の要素に関わっていそうなエラーが発生していないことを確認してください。
こういうエラーがある場合、プロジェクトにSDK2を活用したツール等が残っていることになります。
ここはもう、該当のツールを消すしかありません。
ref
br
15.
最後に、UdonSharp、Trigger2to3をインポートして完了です。