メインコンテンツまでスキップ

UdonSharpファイルを読んでみよう

先ほど作成したファイルを開いてみましょう。

大きく#の文字が書かれている方のファイルをダブルクリックして開きます。

program

こんな感じのプログラムが書かれています。

この中身を読み解くための基礎知識を、今から紹介します。

UdonSharpの基礎知識

UdonSharpとは?

(この項の内容は、今後登場するであろうUdon2には当てはまらない内容です。)

Unityでは、C#というプログラム言語を用いて、プログラミングを行います。
しかし、ビルドという仕組みの都合やセキュリティ面で、VRChatのワールド製作では、C#をそのまま使えません。

そこで、VRChat社が開発したのが、「Udon」という仕組みです。

独自形式のファイル「Udon Assembly」をVRChatクライアント(のUdon VM)が読み込むことで、Udon Assemblyに書かれた内容のプログラムが実行されます。
このUdon Assemblyを、C#のプログラムのファイルから生成してくれるのが、UdonSharpです。
(ちなみに、Udon Graphの場合でも、最終的にはUdon Assemblyとなります。)

C#の基礎知識

オブジェクト

C#は、オブジェクト指向という考え方に基づいて作られています。
(詳しくは説明しません。知りたい人は、「C# オブジェクト指向」とかでググりましょう)

とりあえず知っておかなければならないことは、我々が操作をする対象を「オブジェクト」という、ということです。

例えば、Transformコンポーネントはオブジェクトです。 我々は、Transformコンポーネントに対して、回転をかけたり、移動したりなど、様々な操作を行います。

クラス

このオブジェクトを作るための設計図を、「クラス」と呼びます。 クラスには、「メンバ変数」と「メソッド」の定義が含まれます。

また、クラスから作ったオブジェクトを「インスタンス」と言います。

名前空間とusing

クラスを、フォルダにファイルを入れるような感じで整理する仕組みが、「名前空間(namespace)」です。 この仕組みにより、同じ名前のクラスが衝突することを防ぐことができます。

名前空間は、「.」区切りで表現されます。 例えば、System.Mathは、System名前空間に属している、Mathというクラスを表しています。

しかし、いちいち名前空間を全て記述するのは面倒なことがあります。
例えば、VRChatのAVProビデオプレイヤーのコンポーネントのクラスは、VRC.SDK3.Video.Components.AVPro.VRCAVProVideoPlayerです。
こんなものをいちいち書いていると、日が暮れてしまいます。

これを解決するのが、using構文です。 using 名前空間;と書くことで、このプログラム内で使う名前空間を宣言することができます。
usingした名前空間は、記述を省略することができます。

先ほどの例を用いると、using VRC.SDK3.Video.Components.AVPro; と書いておくと、プログラム内では、VRCAVProVideoPlayerだけで、VRChatのAVProビデオプレイヤーのコンポーネントのクラスを表すことができます。

プログラムの読み取り

先ほどのプログラムを見てみましょう。

program

5行目までが、using構文を書いている部分(usingディレクティブ)です。

7行目から13行目までが、クラスの定義となります。

皆さんが書いていくプログラムの大部分は、ここに記述することになります。

program2