Programming in VRChat

VRChat でのプログラミングについて調べたことの書き溜め

Udon Graph エディタ ガイド (2020/6月版)

ノードを接続して Udon プログラムを作るエディタが改修されました。 新機能や変更点を中心に、ざっと紹介します。

(ツールの使い方の紹介なので Udon プログラムの作り方は説明していません。 この記事は closed beta版をもとに作成したため、リリースされたものとやや異なっている部分があるかもしれません。)

追記:VRChat 2020.3.1 アップデートで SDK が VRCSDK3-UDON-2020.07.16.10.33_Public に更新され、この記事で書いている新しいエディタが正式リリースされました。

f:id:naqtn:20200613021034p:plain

主な変更点

  • 表示の全面的な改修
    • UI が全面的に新しいものになりました。
    • 全体的に動作が機敏になりました。
    • 接続線が直線的に描画されるようになりました。
    • 編集画面の拡大縮小(ズーム)が出来るようになりました。
  • Variables ウィンドウ の導入
    • 変数定義は専用のウィンドウの中で一括して行うようになりました。
    • 変数にアクセスするノードは、ここからドラッグ&ドロップして作るようになりました。 通常のドロップ操作で Get Variable、Ctrl キーを押しながらドロップで Set Variable ノードが生成されます。
  • ノード作成時の検索機能 の改善・変更
    • 動作速度が改善されました。表示されるまで待たされることが無くなりました。スクロールバーが機能していなかったのが修正されました。
    • クラスを選択してから、メソッドを選択する二段階方式になりました。無暗に検索結果が長くなるという不便が解消されます。
    • 表示一覧を、選択しているノードに関連したものにあらかじめ絞り込む機能が追加されました。既に置かれているノードのクラスの別のメソッドの追加が楽になりました。
  • グループの追加
    • ノードを見た目で束ねられる「グループ」機能が追加されました。
  • 明示的なオープン操作
    • 明示的なオープン操作をした時にだけ、編集対象のグラフ・アセットが切り替わるようになりました。
    • エディタ上の選択の変更に追従して表示対象が変更される従来の動作は廃止されました。表示を元に戻す煩わしさが解消しました。
  • ノード追加を便利にする操作の追加
    • Hierarchy ウィンドウから GameObject をドロップすると、それを値とする変数と Get Variable ノードが作成されます。
    • 同様に Inspector ウィンドウから Component をドロップして参照できます。
    • 接続線を伸ばして何もない所で離すと、接続する可能性のあるノードが表示されます。選択すると接続した状態でノードが作成されます。

f:id:naqtn:20200613151747p:plain:w500
以前はこのくらいの規模までグラフを大きくすると私のマシンでは動作がカクカクしてきてしまい作業を続けるのが困難でした。新しいエディタでは十分に編集できるようになりました。(まだ反応性の悪い操作もあります)

画面表示内容

Welcome 画面

f:id:naqtn:20200624065759p:plain:w400

  • Unity メニュー > VRChat SDK > Udon Graph で表示開始した場合は、まず Welcome 画面が表示されます。
    • ツールバー にある Welcome ボタンを押す事でも表示できます。
  • 変更点の案内、設定(Settings)、最後に編集したグラフを開くボタンが表示されます。
    • グラフを開くボタンは、最後に編集したグラフが現在のプロジェクトの中に現在もある場合にのみ表示されます。
  • Settings の内容(設定項目)
    • Grid Snap Size: ノードを移動した時に位置合わせ(スナップ)する長さ。ゼロにするとスナップしなくなります。
    • Focus Search On Selected Node: ノード作成の一覧を、選択しているノードにあらかじめ絞り込むか否か。詳細別記
    • Search On Noodle Drop: ノードから接続線を伸ばして何もない場所で離した時(ドラッグを終了した時)に、そこに接続しうる新規ノードを検索する機能を使うかどうか 詳細別記
    • Use Neon Style: ネオンサインのような異なる色合いでの表示を使用するか否か。
      • (見た目を変えられる機能を備えることのデモ的な意味。そのうちユーザがこのような表示テーマを作れるようになるはず。)

f:id:naqtn:20200616131736p:plain:w400
Neon スタイル(左)と通常スタイル(右)

グラフ編集時のツールバー

f:id:naqtn:20200613170408p:plain:w400

Udon Graph ウィンドウの上部にはツールバーがあります。ツールバーの内容は左から以下のようになっています。

  • Welcome : Welcome 画面を表示するボタン
  • 編集中のグラフ・アセットの名前
  • Settings プルダウン
    • MiniMap と Variables ウィンドウの表示非表示切り替え
  • Compile ボタン
  • Reload ボタン
    • グラフ・アセットを読み込みなおします。
  • 状態表示(status box)
    • コンパイル結果を表示します。成功していると「OK」、失敗していると「!」が表示されます。
    • コンパイルを自動的に実行した時に短時間点灯します。
    • クリックすると、生成したアセンブリ(ないしはエラーの詳細)がテキストで表示されます。

グラフ編集画面

f:id:naqtn:20200616165007p:plain
グラフ編集画面、右クリックメニュー表示時。

  • 右クリックのメニュー Create Node などからノードを作成します
    • (従来ツールバーにあった Add Node ボタンは無くなりました)
    • 作成するノード種の一覧表示は多くの変更があります。 詳細は別記
    • スペースキーの入力でもノード作成の開始になります。
  • ノード選択操作
    • ノードを選択するには、ノードを左クリックします。
    • 地の部分をドラッグすると範囲にかかったノードを選択できます。
    • コントロールキーを押しながら選択すると追加選択になります。
    • 範囲選択でもコントロールキーでの追加選択動作が働くようになりました。
    • 地の部分を左クリックするとノード選択は解除されます。
  • ノードの編集
    • 左ドラッグで任意の位置に配置できます。
      • Welcom 画面Grid Snap Size を設定しておくとスナップ動作します。
    • バリエーション(メソッド・オーバーロードなど)がある場合はドロップするメニューがあらわれます。
    • 配列値を扱う場合、編集ボタンがあらわれます
    • 右上の「?」ボタンをクリックするとブラウザでドキュメントを表示します。
      • (リンク先が正しくなっていないものが含まれているようです。)
    • 選択したノードのカット、コピー、ペースト、デュプリケート(複製)が出来ます。
      • Unity で一般的に使用される Edit メニューとそのショートカット、右クリックメニューで実行できます。
      • 新たなノードはマウスの場所を基準とした位置に作られます。
      • コピーしたグラフは、テキストとして保存したり、他のエディタでペーストすることが出来ます。
      • (ペーストした際に変数の選択が復元されない不具合は修正されました。)
  • 接続線( Noodles(公式ドキュメント)
    • 直線的な表示に変更されました。ノードの背後に描画されるようになりました。
    • 流れの逆向きに入力側のノードからのドラッグでも接続できるようになりました
    • 接続操作がしやすくなりました。接続可能かの判定範囲が広くなり、またドラッグを完了する前に仮の接続線が表示されるようになりました。
    • Welcom 画面Search On Noodle Drop を有効にしておくと、接続線を引き出す操作をきっかけに接続先のノードを作成することができます。 詳細は別記
    • 右クリックのメニューから切断できます。
    • 切断するために選択する必要はなくなりました。マウスカーソルを重ねるとクリックの前に反応する接続線が強調表示されるようになりました。
  • 入力データの型表示
    • 入力接続点(ポート)の上にマウスカーソルを置くと、型情報がポップアップします。
  • ズーム
    • マウスホイールでズームが出来るようになりました。
    • MiniMap に表示されている数値がズーム倍率です
  • 表示領域の移動(パン操作)
    • マウスのミドルボタンのドラッグで表示している範囲が移動します。
    • Alt + 左ボタンドラッグでも同じです。
    • ノードをドラッグしている際に表示領域外へ移動しようとすると、表示領域がそちら方向へ移動します。
  • キーボードによる表示変更
    • a : (All) 全てのノードが出来るだけ入る様に表示位置とズームが調整されます。
    • o : (Origin) 表示位置を原点に移します。ウィンドウ左上がグラフの原点位置になるように表示位置が移動され、ズームが 1.0 になります。
    • [] : 押すたびにノードを順番に中央に、選択状態にして適切なズーム倍率で表示します。
  • 白い輪っかは原点の場所を表します。特に機能はありません。

ノード作成時の検索機能

ノードを作成する時に使う、ノード種の検索機能が一新されました。 検索対象が異なる複数のモードが追加されましたが表面的な表示は従来のものと同じなので、 使い始めの際には差異により戸惑うことがあるかもしれません。 特に Focus Search Selected Node 機能は、ぱっと見では分かりにくいので注意してください。

  • 検索ウィンドウの表示
    • 編集画面の地の部分で右クリックで表示されるメニューから Create Node を選択すると、検索ウィンドウが表示されます。
    • ツールバーにあった AddNode ボタンは無くなりました。)
    • スペースキーの入力でも開けます。
    • この検索モードは Quick Search(公式ドキュメント) と呼ばれます。 新しいグラフエディタではこのモードが検索の基本動作になっています。
  • ノード種の選択
    • メソッドを表すノードの作成では、まずクラスを選択・確定してから、メソッドを選択する二段階方式になりました。
    • テキストを入力した時に検索対象になるのはクラス名になりました。
    • (動作を速くするために、内部的な事情によってこうなっているようです。)
    • メソッド一覧から < をクリックして直前の表示に戻ることは出来ません。
      • クラス選択を間違った場合は、いったん一覧外をクリックして(あるいは ESC キーを押して)追加操作をキャンセルして、初めから操作しなおします。

f:id:naqtn:20200613155247p:plain:w200
検索欄に「float」と入力したした時の表示。まずは型名だけが表示されます。

f:id:naqtn:20200614011838p:plain:w200
Floatクラスを選択すると、メソッド等が一覧されます。

f:id:naqtn:20200613155423p:plain:w300
(参考)従来の検索での表示。メソッドも結果に現れるので候補リストが長く不便でした。

  • 選択しているノードによって、一覧をあらかじめ絞り込む機能が追加されました。
  • Event や Special に分類されるノードもメソッドと同様に同じ種類のノードに一覧が限定されるようになります。
  • Welcome 画面 にある設定項目 Focus Search Selected Node にチェックを入れるとこの機能が使えます。(初期状態では無効化されています。)
  • 全ての選択肢を表示するには地の部分をクリックしてノードの選択を解除します。(あるいは Focus Search Selected Node を無効にします。)
  • この検索モードは Focused Search(公式ドキュメント) )と呼ばれます。

f:id:naqtn:20200613154618p:plain:w300
ノードを選択していない場合。従来と同様の最上位カテゴリが並びます。

f:id:naqtn:20200613154850p:plain:w300
ノードを選択している場合。メニューを開いた段階で既に、選択したノードが属している String 内の選択肢が表示されます。(ウィンドウのタイトルも Systemstring に変化しています)

Search on Noodle Drop

  • 接続線を引き出す操作をきっかけにして、ノード種を検索し、選択したら自動的につないでくれる機能が追加されました。 (公式ドキュメント: Search on Noodle Drop
  • この時、検索の選択肢はその接続線がつなぎうるもののみに、あらかじめ限定されて表示されます。
  • Welcome 画面 にある設定項目 Search On Noodle Drop にチェックを入れるとこの機能が使えます。(初期状態では無効化されています。)
  • 実装されたばかりの機能であるため、これから表示されるリストの内容はこれから改善・調整がおこなわれるかもしれません。
    • 定義済みの変数の Get/Set も型が適合すればリストにあらわれます。
    • フロー(プログラムの進行を表す接続線)では機能しません。
  • 従来方式の検索ウィンドウも Tab キーを押すことで表示できるようになっています。
  • 初回表示されるまで時間がかかります。
  • (この検索機能は Full Search(公式ドキュメント) と呼ばれるようになりました。)

その他の変更

  • 一部のノードは分類が変更されました。移動されたり検索欄では扱わないようになりました。
  • Comment は以前はSpecial の中に分類されていましたが、独立したメニュー項目に移動しました。
  • 以前は Special の中に置かれていた Get Variable, Set VariableVariables ウィンドウ からのドラッグで作るようになりました。検索には現れなくなりました。
  • 変数を作る項目(それぞれの型の中にあった Variable 項目)は無くなり、Variables ウィンドウで作るようになりました。
  • UnityEngine/Debug は頻繁に使うためアクセスしやすくするためメニューの上位に移動されています。
  • VRChat 固有のクラスなどは VRC という分類にまとめられました。
  • Event には UdonEvent, VRCEvent という下位分類が作られました。
    • UdonEvent は Unity 由来のイベントなどが含まれます。(Update, OnTriggerEnter など)
    • VRCEvent は VRChat 固有のイベントなど含まれます。(Interact, OnDrop など)
    • この下位分類は Focus Search Selected Node 機能で適用されます。
    • 探しているイベントが見つからない場合は、別の下位分類に絞り込まれているためかもしれません。選択を外してから再度試みるとよいでしょう。
  • アイコンが C# ファイルのものになりましたが、一律にそうなっているだけで、さしあたり意味はなさそうです。

ノード作成時の動作(私見

ノード作成時の検索機能は、まだまだ今後の改善余地がありそうです。 「分岐のノードとして If を探す人が結構居る。Branch という名前は分かりにくいのでは?」 「Custom Event が Special に分類されているのは分かりにくい」といった意見を伝えたところ、 要望の必要性について開発担当の人から一定の理解は得られました。 ですが、UI ではない所まで波及してしまうのでさしあたり今回の変更・機能追加は見送られました。 「別名を付けたりして使いやすくするようなことが必要かもしれない」とのことでした。

また、Search On Noodle Drop 機能(ポートから接続線を伸ばしてノードが無い位置でリリースした時に、 候補を表示してそこからノードを作成して接続する機能)はまだまだ可能性がありそうです。 これはちょうど、テキストベースのエディタでの自動補完に相当していると言えるでしょう(Visual Studio でいうところの InteliSense)。 未完成のノードの状況から賢い候補選択をするというのは、技術的にもなかなか面白そうな課題だと思います。

特に「ノードのインプット側からデータの上流に向かって伸ばしていける」 というのはノードエディタの特徴をうまく活用することにつなげられそうです。 最初に処理の結果部分を「こういう風にしたい」と置いてから、 「では、それをするためのデータはどうすればいいんだろう?」というような作り方が無理なく行えるようになるかもしれません。 (フローを逆向きに作る事の有用性は、 Factorio や 工業系 MOD を入れた Minecraft といったゲームをプレイしたことのある人には、 「ああ、あれか」と納得してもらえると思います。)

これらの他にも、コンポーネントのドロップで変数を作る機能、ノードからヘルプを見る機能、といったものがあります。 これらをうまく組み合わせると、 「知識をまだ十分には持たない人が試行錯誤しながら学びながらプログラムを作る環境」というものに発展していくのかもしれません。

Variables ウィンドウ

変数の定義は、Variables ウィンドウで一括して行うように変更されました。

f:id:naqtn:20200613160639p:plain:w200
Variables ウィンドウの表示例

  • 追加と削除
    • 変数を追加するには右上の + をクリックします。表示された型の一覧から追加したいものを選びます。
    • 右クリックのメニュー Delete でその変数定義が削除されます。
    • Hierarchy から GameObject をグラフの地の部分にドラッグ&ドロップすることでも変数を作れます。
      • Variables の中にドロップした GameObject を初期値とする変数が作られ、ドロップした場所には Get Variable ノードが作られます。
      • 作られた変数は public になり、UdonBehaviour のインスペクタ表示 Public Variables 上で、ドロップしたオブジェクトが設定されていることが分かります。 (インスペクタへの反映は少し遅れます。欄はすぐに作られますが、値が入るには変数追加後にコンパイルが成功する必要があります。 自動コンパイルが起きるまで少し待つ必要があります。)
      • Drag and Drop for GameObjects and Components(公式ドキュメント)
    • 同様に Inspector からコンポーネントをドラッグ&ドロップすることでも変数を作れます。
      • Inspector 内のコンポーネントのアイコン表示(あるいは名称の部分)をドラッグします。

f:id:naqtn:20200626064341g:plain:w250
Hierarchy からのドロップ操作で、その GameObject を初期値に持つ変数を作成できます

f:id:naqtn:20200626194902g:plain:w400
Inspector からコンポーネントをドロップする事でも変数を作れます

  • 変数の利用
    • Variables からグラフの地の部分へ向けてドラッグ&ドロップすることで、その変数にアクセスするノードが生成されます。
    • Ctrl キーを押しながらドロップすると値を設定する Set Variable ノード、押さない場合は変数の値を取得する Get Variable ノードになります。
    • Drag and Drop for Variables(公式ドキュメント)
    • Get Variable ノードの output の型は従来 object でしたが、変数の型に変更されました。関連が無い型の input につなぐことは出来なくなりました。

  • 改名
    • 右クリックのメニュー Rename で名前の編集ができます。
    • (あるいはダブルクリックでも)
    • 編集は Enter キーで確定、ESC キーで中断します。
  • 命名の制限
    • 名前に使える文字に制限がかかるようになりました。
    • 制限を満たしていない場合、編集完了後空白表示になります
    • プログラム言語でよくある制限になっています。(英字かアンダーバーか数字のみ。ただし先頭に数字は不可。)
    • 以前のエディタで作製した物はそのまま表示されます
  • 詳細設定
    • 一覧中の「>」をクリックすると詳細情報が開きます。
    • Public 設定、Sync 設定、初期値の設定が含まれます。
  • ウィンドウ右下の縁をドラッグしてウィンドウのサイズを変えられます。

MiniMap ウィンドウ

MiniMap はグラフ全体を縮小表示するものです。大きなグラフでも全体を見渡せるようになりました。

f:id:naqtn:20200614190845p:plain
MiniMapの表示例

  • ツールバーにある Settings > Show MiniMap で表示の on/off が出来ます。
  • 黄色の枠が表示している範囲です。
    • (水平方向へずれて表示される不具合があります。)
  • ドラッグでウィンドウを移動できます。
  • 右クリックメニューの Anchor は、MiniMap 自体のドラッグを行えないようにする機能です。
  • MiniMap に縮小表示された個々のノードをクリックすると、それを選択して中央に表示します。
    • 通常のノードはポイントするには小さいので グループ 機能で、複数のノードを処理の塊ごとに囲っておくとグラフ全体を閲覧しやすくなります。

コメントノード

コメントノードに専用の表示形態が与えられるようになりました。 従来のものは、他の一般のノードと同様に作られていたため表示にやや難がありました。

f:id:naqtn:20200625194353p:plain:w300
コメントの表示例と追加メニュー

  • コメントは、ノード作成時の検索一覧の中で従来 Special の下に分類されていましたが、独立したメニューに移動されました。
  • 表示形態が一新されました
    • サイズを自由に変更できるようになりました。
      • 小さくしてもスクロールバーは現れません。意図せずテキストの一部が隠れてしまう、という事が起こるので注意してください。
    • ダブルクリックで編集を開始できます。入力し終わったら地の部分などをクリックして編集を終了します。
    • 複数の行を入力できるようになりました。
      • 改行の入力には(おそらく Unity 側の)問題があるようです。Enter キーを押すと改行が入力されますが、同時に編集確定になってしまいます。 長いテキストを入力する場合は、別途テキストエディタで編集してからコピー&ペーストしたほうが便利そうです。
  • 日本語入力
    • 日本語入力(IME)が使用できます。
    • 漢字はフォントが中国語のものであるため、奇妙に見えてしまう所があります。
    • (ユーザがフォント指定を出来るように要望を出しました。planned になっています。)
  • 既知の不具合・制限事項
    • コメントは今はまだ copy&paste、duplicate に対応していません。
  • Comments(公式ドキュメント)

グループ

ノードを見た目で束ねておける「グループ」という機能が追加されました。 ( Groups(公式ドキュメント)

f:id:naqtn:20200616185516g:plain:w250
グループ機能の基本的な動作(動きがぎこちないのは gif アニメーションで表示しているため)

  • プログラム実行時の意味や機能は無く、編集時に扱いやすくするものです
    • 視覚的にノードの塊が区別できるようになります
    • 個々のノードを選択せずに、まとめて動かせるようになります
    • グループには名前を付けることが出来ます
  • 右クリックメニューの Create Group で作成します。
  • ノードの取り入れ、取り外し
    • ノードをドラッグしてグループに重ねると下部が光るのでそこにドロップすると、ノードがそのグループに属すようになります。
      • グループにグループを入れることは出来ません。(グループを入れ子にすることは出来ません。)
    • 逆にノードをグループから出すには、ノードを選択して、シフトキーを押してからドラッグして取り出します。
      • (右クリックメニューの Remove From Group でも取り出せます。ただ、この項目が表示されなくなる不具合があります。)
  • 先にノードを選択しておいてからグループを作成すると、それらノードが入ったグループが作成されます。
  • 名前部分をダブルクリックすると名前が変更できます。
  • 名前部分をポイントしてドラッグすると全体を移動できます。
  • グループの矩形の大きさを変更することは出来ません。内部のノードを囲うように矩形は自動的に拡縮します。
  • MiniMap でグループを選択すると、グループ全体が見渡せるように表示位置調整がされます。グラフ全体を大きく移動しながら眺める時にも、ノードをグループに分けておくと便利です。
  • 既知の不具合
    • グループは今はまだcopy&paste、duplicate に対応していません。コピー先でグループが復元されません。

その他の改善点、既知の問題など

改善、変更点

  • ノードをコピー&ペーストした際に、変数選択が復元されない不具合は修正されました。
  • 一部のノードのラベルが分かり易いように変更されました。
    • 例:float の加算のノードが従来は「+」であったのが「Single +」と型が見てわかるようになりました。
    • (なお、この float と Single が表示上の不一致を起こしている問題は認識されています。)
  • const array をサイズ 0 で素直に作れるようになりました
    • 以前は表示と実際が異なることが起こり得ました。
  • 従来の Type ノードは生成した後に Type 値を変更できましたが、その機能は廃止されました。
  • 表示上の接続線と実際に内部で把握している接続にずれが生じることがあった不具合は無くなりました
    • こういった表示上の扱いは新規に作り直されているのでそのような不具合は結果的に無くなりました。 ただし新規作成ゆえに別の不具合が作られている可能性はあります。

Tips

  • 既に引かれている接続線をつなぎ変える時に便利な方法: 接続が1本である側(つまり、制御の流れならば出口側、データの流れならば入り口側)からドラッグして新たな接続を張る。 こうすると既に有った接続は自動的に削除されます。

グラフ・アセットを移行する際の注意

  • 以前のエディタで作成したグラフ・アセットはそのまま読み込んで使用できます。
  • 変数名の文字に制限がかかりました。従来のものはそのまま取り込まれますが、その後の編集の際には注意が必要です。
  • 変数のそばにコメントノードを置いていた場合、変数がノードではなくなったので何を指していたのか分からなくなりがちです。

不具合について

  • 「エディタ上で実行する際に、一度プレイボタンを押さないとプログラムが更新されない」というような不具合は相変わらずあります。内部的にはそれはグラフエディタの機能ではないので、まだ改善されていません。
  • ウィンドウを開く時(およびロードする時)に Scene ウィンドウと同じ場所に表示しようとします。その結果、勝手にウィンドウレイアウトが変更される場合があります。
  • ペースト操作したノードが以前に開いていたアセットに入ってしまう不具合があります。
    • ペースト操作の前に地の部分を一回クリックしてやると防げます。

リファレンス

操作一覧

(表を簡潔にするため、UIの見掛けで判別のつきそうなものは省略しています。)

分類 操作 機能
グラフ閲覧 解説
マウスホイール ズーム
ミドルボタンドラッグ 表示位置変更(パン操作)
Alt + 左ドラッグ 同上
a キー (All) 全てのノードが出来るだけ入る様に表示位置とズームを調整
o キー (Origin) 表示位置を原点に移し、ズーム等倍
[ キー 押すたびにノードを順番に閲覧(選択状態にして中央にしてズームを調整)
] キー ノードを逆順にたどり、上記と同じことをする
ノード選択 解説
Ctrl + A 全てのノードを選択
ノードを左クリック そのノードのみを選択状態に
地の部分で左ドラッグ 矩形範囲に入ったノードの選択
Ctrl + ノードを左クリック ノードを追加選択
Ctrl + 地の部分で左ドラッグ 矩形範囲に入ったノードを追加選択
ノード追加 解説
(スペース)キー ノードを作成する検索の表示(Quick Search か Focused Search(ノードを選択している場合))
Tab キー ノードを作成する検索の表示(従来方式である Full Search)
右クリックメニュー Create Node 上記スペースキーと同じ
ノード編集 (Unity での一般的なエディタ操作と同じ。Unity メニュー、右クリックメニューにも)
Ctrl + X キー カット
Ctrl + C キー コピー
Ctrl + V キー ペースト
Ctrl + D キー デュプリケート(複製)
接続線 解説
ポートをマウスでポイント 型の表示
ポートからポートへ左ドラッグ 接続線の作成(接続数が1の側から引き直した場合は既存のものは削除)
ポートからドラッグ&何もない場所でリリース ノードを作成する検索の表示(ポートの型に応じた検索&確定後接続)
変数 解説
Variables ウィンドウからドラッグ&ドロップ Get Variable ノード作成 (ノード編集の地の部分へのドロップ)
Ctrl + 上記 Set Variable ノード作成
Hierarchy ウィンドウからドラッグ&ドロップ 変数作成 (GameObject のノード編集の地の部分へのドロップ)
Inspector からドラッグ&ドロップ 変数作成 (Component のノード編集の地の部分へのドロップ)
MiniMap 解説
ノードを左クリック そのノードを選択状態にして中央にしてズームを調整
グループ 解説
右クリックメニュー Create Group グループを作成
ノードを選択して Create Group グループを作成して、選択したノードを格納
ノードを左ドラッグ&グループへドロップ ノードをグループに入れる
Shift + ノードを左ドラッグ グループからノードを取り出す
テキスト部分ダブルクリック テキスト編集開始 (Enter で編集終了。ESC で中止。)
コメント 解説
右クリックメニュー Create Comment コメントノードの作成
枠の右下をドラッグ 表示サイズ変更
テキスト部分ダブルクリック テキスト編集開始(他の部分をクリックて編集終了)

オープン操作

グラフエディタで編集を開始する手順はいくつかあります。(従来と同じです)

  • Unity メニュー から
    • VRChat SDK > New Udon Graph
    • Welcome 画面 が開かれます。前に編集していたグラフがある場合はオープンするボタンが表示されます。
  • インスペクタ中の UdonBehaviour コンポーネント表示から
    • UdonBehaviour コンポーネントの ProgramSource に Udon Graph Program Asset が設定されている場合 Open Udon Graph ボタンが表示されます。
    • 新規に作成する場合は、GameObject に UdonBehaviour を追加した後、 プルダウンメニューで Udon Graph Program Asset を選択した後に、New Program ボタンを押します。
  • インスペクタ中の Udon Graph Program Asset の表示から
    • Project ウィンドウで Udon Graph アセットを選択すると Open Udon Graph ボタンが表示されます。
    • 新規に作成する場合は、Project ウィンドウでフォルダを選択した後に、右クリックメニュー(あるいは Asset メニュー)の Create > VRChat > Udon > Udon Graph Program Asset を選択します。
    • (作成されるものは UdonBehaviour コンポーネントNew Program ボタンと同じです。初期の格納フォルダが異なるだけです。)

内部的な話題

  • 新しいグラフエディタは UIElements という Unity 2019 の新機能を使って作られています。
  • 用語メモ
    • ノード Node
    • エッジ Edge ノードをつなぐ線(ないしは辺)。向きがある。
    • ポート Port ノードに属するエッジがつながる場所。型情報など持っている。
      • input port ノードに入ってくる向きのポート
      • output port ノードから出ていく向きのポート
    • フロー Flow プログラムの進行を表すエッジ