概要
VRChatのワールドに、プレイヤーのアクションに反応するボタンや、自動で開くドアのような動的なギミックを追加するには、スクリプトによるプログラミングが必要です。本記事では、そのために使用されるUdonSharpの基本的な概念について解説します。
UdonSharpの役割を正確に理解するため、まずその基盤となるVRChat Udonという仕組みから説明し、なぜUdonが必要なのか、そしてUdonSharpでどのようなことが実現できる のかを学びます。
UdonとUdonSharpの役割分担
UdonSharpとUdonは密接に関連していますが、その役割は明確に異なります。ワールド制作を始めるにあたり、この2つの違いを理解することが重要です。
VRChat Udon: プログラムを実行するための「仮想マシン」
Udonは、VRChatが開発した、ワールド内でプログラムを安全に実行するための仕組みそのものです。これは「Udon VM (Virtual Machine)」とも呼ばれる仮想的な実行環境であり、すべてのUdonプログラムはこのVM上で動作します。
Udon VMは、危険な命令の実行を防ぐ「サンドボックス」として機能します。これにより、どのユーザーが作成したワールドでも、VRChatは利用者のPC環境を危険に晒すことなく安全にプログラムを実行できます。
Udon VMが直接解釈するプログラム言語は「Udon Assembly」と呼ばれますが、これは人間が直接記述するには非常に低レベルで複雑です。
UdonSharp: UdonプログラムをC#で記述する「コンパイラ」
UdonSharpは、人間にとって分かりやすい高水準プログラミング言語であるC#を使ってUdonのプログラムを作成できるようにするコンパイラです。コンパイラとは、あるプログラミング言語で書かれたコードを、別の言語(この場合はUdon Assembly)に変換するツールのことです。
制作者はUdonSharpを用いてC#でコードを書き、UdonSharpがそれをUdon Assemblyに自動的に変換するこ とで、Udon VM上でプログラムが動作します。

| 用語 | 役割 |
|---|---|
| Udon | VRChat内でプログラムを安全に実行するための仮想マシン (VM) |
| UdonSharp | C#で書かれたコードをUdon Assemblyに変換するコンパイラ |
この仕組みにより、制作者は複雑なUdon Assemblyを意識することなく、広く使われているC#の知識を活かしてワールドのギミックを開発できます。
Udonが必要とされる理由
標準的なUnityのC#スクリプトがVRChatで直接使用できないのには、主に2つの理由があります。
-
セキュリティ: 通常のC#スクリプトは、PCのファイルシステムへのアクセスや、外部サーバーとの自由な通信など、強力な機能を持っています。悪意のある制作者がこれを乱用すると、利用者のPCに損害を与えることが可能です。Udon VMという制限された環境は、こうした危険な操作を防ぎ、プラットフォームの安全性を担保します。
-
クロスプラットフォーム互換性: VRChatはPC(Windows)とMeta Quest(Android)な ど、異なるOSやハードウェアで動作します。Udon VMという共通の実行環境を設けることで、一度作成したプログラムがどのプラットフォームでも同じように動作することを保証しています。
UdonSharpで実装可能な機能の例
UdonSharpを使用することで、ワールドに様々なインタラクティブ機能を追加できます。
-
基本的なインタラクション
- プレイヤーが近づくと自動で開閉するドア
- クリックするとBGMが切り替わるジュークボックス
- 手に取ると点灯する懐中電灯
-
ゲーム要素
- スコアを記録・表示する的当てゲーム
- プレイヤーを特定の場所へ移動させるテレポートポータル
- 運転可能な乗り物(車、電車など)
-
ソーシャル機能
- プレイヤーの参加・退出を知らせるメッセージ表示
- ワールド内の全員で同じ動画を同期再生するビデオプレイヤー
-
環境演出
- 時間経過で天候や照明が変化するシステム
- 音楽に合わせてオブジェクトが明滅する演出
これらの機能は、UdonSharpが提供するVRChatのシステム(プレイヤー情報、ネットワーク同期など)と連携する命令によって実現されます。
UdonSharpの主な制限事項
UdonSharpは強力ですが、安全性の観点からいくつかの機能制限があります。
- ファイルシステムへのアクセス禁止: ローカルファイルへの読み書きはできません。
- ネットワーク通信の制限: VRChatが許可したAPIを除き、外部のウェブサイトやサーバーと直接通信することはできません。
- 一部のC#機能の利用不可: ジェネリクス(例:
List<T>)など、Udon VMがサポートしていない一部の高度なC#機能は直接利用できません。ただし、多くの場合、代替となる手段が用意されています。
これらの制限は、安全なプラットフォームを維持するために不可欠なものです。制作時には、これらの制約の中で目的を達成する方法を考える必要があります。
まとめ
- Udonは、VRChat内でプログラムを安全に実行するための仮想マシンです。
- UdonSharpは、Udonで動作するプログラムをC#で記述するためのコンパイラです。
- セキュリティとクロスプラットフォーム互換性の確保が、Udonが必要とされる主な理由です。
- UdonSharpを用いることで、ボタンからゲームまで、多種多様なインタラクティブ機能を実装できます。