Udon Node Graph
Udon Node Graphは、Udonプログラムを作成するための標準的なインターフェースです。このセクションでは、その使用方法について解説します。すぐに具体的な例を確認したい場合は、Udon Example Sceneを参照してください。
インターフェース
Udon Graphウィンドウは、VRChatSDK > Udon Graphからメニュー項目を選択するか、UdonBehaviourコンポーネントにあるOpen Udon Graphボタンをクリックすることで開くことができます。

メニューコマンドからウィンドウを開くと、変更履歴やいくつかの設定が表示されるウェルカム画面が開きます。
複数のグラフを同時に開くことができ、グラフウィンドウ上部のタブを使って切り替えることが可能です。
タブの隅にあるXをクリックすると、タブを閉じることができます。グラフのタブは「本物の」タブではなく、選択するたびに各タブを読み込み直す仕組みになっています。そのため、タブの切り替えにはグラフを開くのと同じ程度の時間がかかります。
フロー
グラフのフローは、どのノードが実行されるか、そしてどのような順序で実行されるかを定義します。

上の画像にある三角形が Flow ポートであり、これらは接続されている線(ヌードル)をたどって左から右へ順番に実行されます。Udonグラフで何が起こっているかを理解し、独自のグラフを作成するには、フローをたどることが重要です。
上部バーにある「Highlight flow」トグルを有効にすると、フローのエッジで接続されているノードが強調表示され、プログラムが特定のノードにどのように到達するかを素早く確認できます。

ノードにフローの接続がない場合、何も起こりません。
上のグラフの動作:
- ワールドが読み込まれると Start イベントがトリガーされます。
- 次に Branch がトリガーされます。Branch はチェックボックスの値をチェックし、True または False のいずれかのパスをトリガーします。
- 値が True の場合、上のノードがトリガーされ、「Hello」という名前の Custom Event が送信されます。
- そうでない場合は、「Goodbye」という名前の Custom Event が送信されます。
Sending a Custom Event の意味がまだわからなくても問題ありません。グラフのフローを読み解くことは、グラフが何をしているかを理解するための第一歩です。
ノードの作成
ノードは、実行可能なメソッドを表すボックスです。グラフの構築とは、ノードを作成してそれらを接続し、プログラムを作成する作業のことです。
ノードを作成するには、いくつかの方法があります。
ホットキー
以下のいずれかのキーを押しながらグラフ上の任意の場所をクリックすると、対応するノードが作成されます。
1: float2: Vector23: Vector34: Vector4+: float 加算-: float 減算=: float 等価比較b: Branchshift+b: Block
その他のホットキー:
- 「C」キーを押しながら定数をクリックすると、変数の型に変換されます。
- Shift+A キーで、選択したノードを整列させます。
- Ctrl+G キーを押しながらドラッグすると、素早くグループ化できます。
- L+クリックで、選択したノードの値をログ出力します。
- 「Shift+F」キーを押しながら配列型を出力するノードをクリックすると、foreachループが自動的に生成されます。
これらの機能の多くは、各ノードの右クリックメニューからも利用可能です。

GameObjectとComponentのドラッグ&ドロップ
GameObjectやComponentにインタラクティブな機能を追加したい場合は、Hierarchyウィンドウからグラフへ直接ドラッグ&ドロップできます。例えば、Lightコンポーネントのタイトル部分をドラッグしてグラフ上にドロップします。
このようにドラッグ&ドロップでノードを作成すると、そのGameObjectやComponentに関連付けられた変数が生成されます。Variablesウィンドウに新しい変数が追加され、コンポーネントを取得するように自動設定された「Get Variable」ノードがグラフ上に配置されます。
変数のドラッグ&ドロップ
Graph SidebarのVariablesペインにある + ボタンを押すことで、任意の型の変数を作成できます。作成した変数は、名前をグラフ上にドラッグ&ドロップして「Get Variable」ノードを作成したり、 Ctrl キーを押しながらドラッグして「Set Variable」ノードを作成したり、 Alt キーを押しながらドラッグして「On Variable Changed」ノードを作成したりできます。
ノードの検索
スペースキー を押すとクイック検索が開きます。操作したいクラス名の最初の数文字を入力してください。

この検索方法は、Unityの基本的なクラスやオブジェクト型を把握している場合に最も効率的です。その他の検索方法については、Searching for nodesを参照してください。
グラフのコンパイル
グラフはバックグラウンドで定期的に自動コンパイルされます。コンパイルが行われると、グラフの右上にフラッシュが表示されます。正常に完了した場合は Status ボックスが緑色に、問題がある場合は赤色に変わります。いずれの場合も、Status ボックスをクリックすることで、生成された Assembly Code を確認したり、問題が発生した場合にはエラー内容を確認したりできます。

グラフの実行
シーン内のグラフをVRChatへアップロードする前に実行する方法は2つあります。
エディタ内での実行
Unityの再生ボタンを使用して、エディタ内で直接シーンを実行し、いくつかのグラフをテストできます。これは単純なメソッドやロジックには有効ですが、以下の項目は期待通りに動作しません。
- Synced Variables(同期変数) & Networked Events(ネットワークイベント)
Build & Testによる実行
VRChat SDKウィンドウを使用してローカルテストを行います。これにはコンテンツをオフラインワールドとしてバンドルし、実際のVRChatクライアントを起動するため多少時間がかかりますが、オブジェクトや VRCPlayerAPI のリクエストとインタラクション可能なアバターを使用できます。

Synced variablesや NetworkEvent をテストするには、2つのクライアントが必要です。'Number of Clients' フィールドを使用すると、プライベートなテストワールドで最大8つまでのローカルクライアントを起動できます。これらはすべて同じ DisplayName を持ちますが、それ以外は別々のプレイヤーとして認識されるため、インタラクションをテストできます。
'Force Non-VR' が機能しない場合は、VRChat SDKウィンドウの 'Settings' タブに切り替え、VRChat Client Pathが実際のVRChatインストール先を指すように設定してください。

ワールドのアップロード
VRChatアカウントを作成すると、すぐに Build & Test が行えるようになります。他のプレイヤーが訪問できる状態でワールドを公開するには、VRChat内で一定時間過ごす必要があります。いろいろなワールドを巡ったり、フレンドを作ったりして、創作のインスピレーションを得ましょう!
最終更新: