VRChat 非公式日本語ドキュメント

移行

UdonSharp 0.x(.unitypackage版)は非推奨となり、サポートを終了しました。

新しいバージョンのUdonSharpはVRChat Worlds SDKに含まれており、Creator Companionから簡単にインストールできます。Creator Companionを使用してプロジェクトを移行することを強く推奨します。手動で移行を行う場合は、手動移行をお読みください。

UdonSharp 1.0の新機能

  • UdonSharpプログラムで利用可能な More C# features:
    • static メソッド
    • ジェネリックな static メソッド
    • paramsoutref、およびデフォルト引数
    • 拡張メソッド
    • 継承、仮想メソッド、および抽象クラス
    • 部分クラス(Partial classes)
    • Enums
  • Unityインスペクターで複数のUdonSharpスクリプトをMulti-edit(一括編集)可能に
  • Prefab variantsinstancesnestingを完全サポート
  • Editor scriptingを刷新し、簡略化
  • and
  • さまざまなバグ、エッジケース、その他の不具合を修正

既知の問題

非常に古いバージョンのUdonSharpからプロジェクトを移行する際、いくつかの既知の問題が発生する可能性があります。その対処法を以下に示します。

まずはこちらを試してください!

UdonSharpで問題が発生した場合は、「Assets」 > 「Reimport All」からすべてのアセットの再インポートをお試しください。

多くの場合、これでUdonSharpに関連するインポートの問題が解決します。特に古いバージョンからプロジェクトを移行、またはアップグレードした際に有効です。

Nested Prefabs

問題: UdonSharpでは以前よりNested Prefabs(入れ子状のプレハブ)の使用に対して警告が表示されていました。古いバージョンから移行する際、Nested Prefabsが壊れる可能性があります。

症状: Unityのコンソールに Cannot upgrade scene behaviour 'SomethingOrOther' since its prefab must be upgraded といったエラーが表示されます。

修正方法: まず、0.xのUdonSharpプロジェクトでプレハブをアンパック(展開)してください。また、「Udon Sharp」メニューから「Force Upgrade」を選択することでも可能です。

U#アセンブリに属していない

問題: 独自のAssembly Definitionを持つライブラリには、U#アセンブリ定義も必要です。

症状: Unityのコンソールに [UdonSharp] Script 'Assets/MyScript.cs' does not belong to a U# assembly, have you made a U# assembly definition for the assembly the script is a part of? といったエラーが表示されます。

修正方法:

  1. Projectウィンドウを使用して、対象のスクリプトと同じディレクトリ、または親ディレクトリにある .asmdef で終わるファイルを見つけてください。
  2. このAssembly Definitionが存在するフォルダーを右クリックし、Create > U# Assembly Definition を選択します。
  3. 新しく作成されたU# asmdefを選択し、インスペクターを使用して「Source Assembly」を元のAssembly Definition Fileに設定します。
  4. これを行った後、Unityの再起動が必要になる場合があります。

Newtonsoft.Json.Dll

問題: 一部のパッケージには、VRCSDK自体が取り込むJSONライブラリのコピーが含まれています。その結果、ライブラリが重複してしまいます。

症状: Unityのコンソールに上記ライブラリに関連するエラーが表示されます。文頭に表示されるとは限りませんが、System.TypeInitializationException: the type initializer for blah blah blah...Assets/SketchfabForUnity/Dependencies/Libraries/Newtonsoft.Json.dll のようなエラーが出力されます。

修正方法: Assetsフォルダー内にある Newtonsoft.Json.dll のコピーをすべて削除してください。VRCSDKが必要とするパッケージに対しては、Package Managerを通じて提供されます。

その他の破壊的変更

  • U# Behaviour名は、.csファイル名と一致している必要があります。
  • 重複したプログラムアセットが同じ .cs ファイルを参照することはできません。
  • プログラムアセットはスクリプトを指定する必要があり、空であってはいけません。
  • エディタスクリプトの仕様が変更されました:データはUdonSharpBehaviourのC#プロキシが保持し、対応するUdonBehaviourは実行時まで空となります。
  • StationおよびPlayerの参加イベントにおける廃止されたオーバーロードは使用できません。

手動での移行

Creator Companionを使用せずに、バージョン1.0未満のUdonSharpを使用しているプロジェクトをアップグレードするには、以下の手順に従ってください:

  1. プロジェクトをバックアップしてください。
  2. プロジェクトの「Assets」フォルダーから、VRCSDKフォルダー、Udonフォルダー、UdonSharpフォルダー、およびGizmos/UdonSharpフォルダーを削除してください。
  3. World SDKのUnity Package版をダウンロードしてインストールしてください。
  4. UdonSharp SDKのUnity Package版をダウンロードしてインストールしてください。

最終更新: