SDK2プロジェクトの移行

Last-modified: Sun, 02 Oct 2022 09:58:59 JST (575d)
Top > ConvertSDK2

Trigger2to3のSDK2互換性を利用して、

もともとSDK2で作成されていたプロジェクトをSDK3に移行させるツール

「Convert2to3」を開発しています。

 

ただし、現在VPM版(UdonSharp ver1.x対応版)には対応できていません。

(永遠に不可能かもしれません)

 

現在はテスト運用中のため、Discord内でのみ配布しています。

下記の招待リンクから、どなたでもお試しいただけます。

 

Convert2to3テスト用サーバー招待リンク

 

ただし、テスト目的のため、結果の報告にご協力ください。

 

移行条件 Edit

SDK2で扱えて、SDK3で扱えないケースは数多く存在します。
そこを踏まえて、移行作業を検討してください。

 

Convert2to3の移行条件は、Trigger2to3で対応できる範囲内と、

SDK2とSDK3の間でインターフェースの相違が殆どなく、単純変換できるVRCSDKコンポーネントです。

具体的には、以下のコンポーネントです。

単純変換できるコンポーネント Edit

VRC_SceneDescriptorVRC_PickupVRC_ObjectSyncVRC_Station
VRC_MirrorReflection(※1)VRC_AvatarPedestalVRC_PortalMarkerVRC_SpatialAudioSource
VRC_UiShapeVRC_VisualDamage

Trigger2to3で対応できるコンポーネント Edit

VRC_Trigger(※2)VRC_PlayerModsVRC_PlayerAudioOverrideVRC_MidiNoteIn
VRC_AudioBankVRC_SceneResetPosition
 

(※1)VRC_MirrorRefrectionは一部移行できないパラメータがあります

  Mirror Resolution

  Maximum Antialiasing

  Custom Shader

 

(※2)対応できない機能も存在します。

  対応範囲は、「VRC_Triggerとの差異」のページを参照してください。

 

また、SDK2コンポーネントを操作するボタンなどのUIイベントの変換は対応できていません。(検討中)

 

単純に移行できない代表例 Edit

SpawnObjectで生成されたオブジェクトのUdonやPickupは正しく動作しません。ObjectPoolに切り替える必要があります。

・Unity Standard AssetsはSDK3で使用不可になっているため、これを利用しているギミックは動作しません。

・Video系のコンポーネントはSDK3にもありますが、単純変換できないため、現在のところConvert2to3の移行対象外です。

 

SDK2専用のツール等を利用している場合は、SDK3対応版や他のツールを探し、切り替えることを検討してください。

 

移行手順 Edit

1.

まず、移行したいプロジェクトのバックアップを取ってください。(何より大切!)

 

2.

プロジェクトは現在のVRChat適応版(Unity2019.4.31f)になっていることを前提としています。

もし古いバージョンの場合は、Unityアップグレード作業を先に行ってください。

 

3.

VRChat公式で、SDK3のWorlds、AvatarsのSDKを入手し、それぞれインポートしてください。

SDK2は入ったままでOKです。

Convert01.png

はい、Avatarsも必要です。機能は使用しませんが、Unity正常化のために必要です。

SDK2が共存しているプロジェクトでは、これがないとエラーになります。

 

インポート完了後、エラーが発生していないことを確認してください。

もし、エラーが発生している場合、Unity再起動を試みると解消する場合があります。

 

4.

次に、UdonSharpを入手し、インポートしてください。

インポート完了後、エラーが発生していないことを確認してください。

 

5.

Trigger2to3をインポートしてください。

 

6.

Convert2to3をインポートしてください。

 

7.

いよいよ実行ですが、その前にいったんConsoleを開き(一番下のバー、もしくは Window > General > Console)、

Clearボタンでログを消去してください。

実行時のログを見やすくするためです。

Convert02.png
 

8.

移行したいワールドのSceneを開き、上のメニューバーの「Tools > Convert2to3 > Add SDK3 Components」を選択すると、

SDK2のコンポーネントから変換されたSDK3のコンポーネントが追加されます。

Convert03.png
 

この時点でエラーが出たりしたら、バグの可能性が高いです。

ご報告ください。。

 
 
 
 
 
 

移行対象外のコンポーネントやVRC_Triggerのコマンドがある場合、ワーニング表示されます。

Convert04.png
 

GameObjectのInspectorを見てみると、

SDK2のコンポーネントの下にSDK3のコンポーネントやTrigger2to3が追加されていたりします。

Convert05.png

Convert06.png

 

ちなみに、SDK2のコンポーネントは「VRC_SceneDescriptor」のようにアンダーバーが付いているのに対し、

SDK3のコンポーネントは「VRC SceneDescriptor」のように、アンダーバーが付いていない名称となっています。

 

9.

変換状況をなんとなく確認したら、「Tools > Convert2to3 > Delete SDK2 Components」を実行してください。

SceneからSDK2のコンポーネントが削除されます。

Convert07.png
 

10.

Sceneの準備ができたとして、次はプロジェクトからSDK2を無くします。

その前にSceneを保存し、「File > New Scene」でSceneを閉じます。

Convert08.png
 

11.

お役御免のConvert2to3を削除します。

Convert09.png
 

12.

いったん、Trigger2to3、UdonSharp、VRCSDKの3つのフォルダを丸ごと削除します。

Convert10.png
 

13.

「Edit > Project Settings」を開き、「Player > Other Settings > Scripting Define Symbols」のところにある

「VRC_SDK_VRCSDK2;」の部分を消します。

 

※この項目はマウスで操作しようとするとうまく選択できないので、カーソルキーを使って項目を選択してください。

 そして、項目を編集したら、Enterキーで反映してください。

 そのままウィンドウを閉じるとキャンセルになるので注意してください。

 

Convert11.png

Convert12.png

 

14.

改めて、SDK3-Worldsをインポートします。

Convert13.png
 

このあとに、Consoleを確認し、

図のようなVRCSDK2の要素に関わっていそうなエラーが発生していないことを確認してください。

こういうエラーがある場合、プロジェクトにSDK2を活用したツール等が残っていることになります。

ここはもう、該当のツールを消すしかありません。 

Convert14.png
 

15.

最後に、UdonSharp、Trigger2to3をインポートして完了です。

Convert15.png