Unity の C# を書いて、VRChat で動かす。
Udonite は通常の Unity 用 C# を VRChat ワールド向けの Udon にコンパイルします。覚えるべき方言も、使えないキーワードの一覧もありません。すでに書いているコードがそのままワールドで動きます。ワールド単体ではできない部分はホスティングサービスが補います。
押す、同期する、表示する
誰でも押せるボタン、全プレイヤーに見えるカウント、それに追従するラベル。sync 属性も、シリアライズ呼び出しも、方言もありません。チュートリアルでは空のプロジェクトから約 15 分で作ります。
Interactはプレイヤーがオブジェクトを押すと走ります。Synced<int>は全クライアントが持つカウントです。.Value に書き込むと複製され、後から参加したプレイヤーも現在の値を受け取ります。Subscribeは値が届いたとき全クライアントで走るので、ラベルの更新はちょうど 1 か所です。
コンパイラを入手する
無料で、これからも無料です。このリスティングを VRChat Creator Companion に貼り付け、パッケージ一覧から Udonite を追加してください。
https://udonite.github.io/vpm/index.json
VCC に追加コンパイラ
C# を入力し、Udon を出力します。ジェネリクスやインターフェースなども作り直すのではなくコンパイルするので、普通の Unity プロジェクトと同じように書けます。
ホスティングサービス
ワールドから Discord やスマートフォンにメッセージを送れます。カウンター、スコア表、共有スイッチは全員が退出しても残ります。
パッケージ
ワールドに入れて使うライブラリです。Udon で正しく書くのが面倒な部分を、それぞれが普通の C# に戻します。
バインディング
インスペクターで何も配線せずに、プレイヤーがコントロールを操作したことを受け取る。
ドキュメントを読む →ログ
どの behaviour の、どのメソッドの、何行目から出たログなのかを自分で言うログ。アップロードした後も動きます。
ドキュメントを読む →ネットワーク
変化を教えてくれる同期値と、誰でも送れる型付きメッセージ。シーンに用意するものはありません。
ドキュメントを読む →Observables
変わったことを購読者に伝える値。スコアとそれを映すものが、手で突いて回る一覧なしで足並みを揃えます。
ドキュメントを読む →永続化
プレイヤーの進行状況の保存を、16 種類のメソッドではなく 2 つの動詞で。タイミングの落とし穴も引き受けます。
ドキュメントを読む →シリアライゼーション
データをバイト列にも JSON にも詰められます。どちらも Udon がすでに持っている仕組みの上に乗っているだけで、作り直したものではありません。
ドキュメントを読む →よくある質問
- Udonite とは何ですか?
- Udonite は、通常の Unity 用 C# を VRChat ワールドのスクリプト実行環境である Udon にコンパイルするコンパイラで、パッケージとホスティングサービスも含みます。普通の Unity プロジェクトと同じように MonoBehaviour を書けば、保存時に Udonite が Udon プログラムにコンパイルします。詳しくはコンパイラのドキュメントを参照してください。
- UdonSharp と何が違いますか?
- UdonSharp は独自のルールと使えない機能の一覧を持つ C# の方言です。Udonite は、ジェネリクス、インターフェース、LINQ、async、レコードを含め、すでに書いている C# をそのままコンパイルし、Udon 自体ができないことだけを診断コードと書き換え案を添えて名指しで拒否します。UdonSharp のビヘイビアも同じプロジェクトでそのまま動きます。何がコンパイルできるかは言語サポートにあります。
- Udonite は無料ですか?
- コンパイラとパッケージは無料で、これからも無料です。ホスティングサービスには開発に十分な無料枠があり、サポーターになると上限が上がります。
- Udonite はどうインストールしますか?
- 上のボタンで VRChat Creator Companion に Udonite のリスティングを追加し、ワールドプロジェクトにパッケージを追加します。最初のワールドが手順を一つずつ案内し、はじめにはその短い版です。
- 対応する Unity と VRChat SDK のバージョンは?
- VRChat が現在ワールド向けにサポートしているもの、つまり今日時点では Unity 2022.3 と Worlds SDK 3.10 以降です。VRChat は現在の Unity バージョンと SDK をドキュメントに保っており、Udonite はそれに従います。
- ホスティングサービスは何をしますか?
- Relay はワールドから Discord のウェブフックやスマートフォンにメッセージを送ります。Storage はカウンター、スコア表、共有スイッチを全員が退出しても残します。どちらもダッシュボードから管理し、ワールドからは Net と Persistence パッケージで利用します。