クイックスタート
導入してから、最初の Behaviour がワールドで動くまでの順を追います。
VRChat Worlds SDK(Udon)を導入した Unity 2022.3 のプロジェクトが必要です。SDK を導入していないプロジェクトでは、実行環境の API を参照できないため動作しません。
1. パッケージの導入
Section titled “1. パッケージの導入”| 順 | やること |
|---|---|
| 1 | VPM の一覧として https://zz-roba.github.io/tsukimi-vpm/index.json を追加する |
| 2 | パッケージの一覧から TsukimiSharp(T#) を選んで導入する |
VCC と ALCOM は手順が同じです。


配布ファイルからの導入
Section titled “配布ファイルからの導入”配布ファイルは zip 形式です。展開して出てくる .tgz を、Unity の Package Manager(Window > Package Manager)の Add package from tarball で追加します。このボタンは Unity の Package Manager にあるもので、VCC と ALCOM にはありません。
導入すると、コンパイラとエディタ拡張のほかに、AI クライアントから使う MCP サーバと、AI 向けの指示ファイルが同梱されます。このページの手順では設定の作業はありません。MCP サーバを使うときだけ、MCP サーバの設定の操作が別に必要です。
2. 最初のスクリプト
Section titled “2. 最初のスクリプト”Project ビューで右クリックし、Create から T# Script を選びます。

名前を決めるウィンドウが開きます。決めると、空の Behaviour が 1 つと、それに対応するプログラムアセットが同時にできます。この 2 つは対で扱われるので、片方だけを消したり名前を変えたりしないでください。

保存先は Assets の中のフォルダです。Assets の直下は、専用のアセンブリ定義を置けないため、作成が中止されます。
一緒に作られるファイル
Section titled “一緒に作られるファイル”そのフォルダの上にアセンブリ定義が 1 つも無いときは、アセンブリ定義と IsExternalInit.cs が同じフォルダに作られます。この 2 つは新しい構文を使うために必要なものです。すでに .cs があるフォルダでは、別のアセンブリに分けてよいかの確認が表示されます。

生成されたファイルは、通常の C# として読めます。Tsukimi.TsukimiBehaviour を継承したクラスが 1 つあり、そこに実行環境が呼ぶイベントを書いていきます。
3. 保存とコンパイル
Section titled “3. 保存とコンパイル”保存すると自動的にコンパイルされます。成功すると、プログラムアセットに結果が表示されます。命令数と extern の数、生成された Udon のアセンブリも同じところで読めます。

コンパイルの記録はコンソールにも出力されます。

ほかの .cs の型
Section titled “ほかの .cs の型”Behaviour のプログラムから参照できる型は、次の範囲の .cs に書かれた型です。
- その Behaviour の
.csがあるフォルダ - その下のフォルダ
範囲の .cs の中身 | プログラムへの入り方 |
|---|---|
補助の型だけ(struct・enum・静的クラスなど) | 型の定義がこのプログラムに組み込まれます |
同じ Behaviour の partial の続き(基底のクラスを書いていないものも) | このプログラムの本体に入ります。名前が 名前.Tests.cs のファイルは除きます(テスト) |
| 別の具象の Behaviour | 型として参照できます(public Lamp lamp; と宣言し、lamp.Toggle() と呼べます)。メソッドの本体はこのプログラムに入りません |
| 範囲の外のフォルダの型 | CS0246 になります。エラーには、その型を宣言しているファイルと、範囲の外であることが添えられます |
再コンパイルの範囲
Section titled “再コンパイルの範囲”.cs を保存すると、その .cs を範囲に含むプログラムが再コンパイルの対象になります。前回のコンパイルが成功していれば、次の変更だけのプログラムは再コンパイルを省きます。
- コメントと空白
- 範囲の中の別の Behaviour の、メソッドの本体(static のメソッド・ジェネリックのメソッド、継承されている Behaviour・partial の Behaviour は除きます)
| 変更 | 範囲に含むプログラム |
|---|---|
| フィールド・メソッドのシグネチャ・属性 | 再コンパイルされます |
| TsukimiCode > Compile All Tsukimi Programs の実行 | すべて再コンパイルされます |
エラーの表示
Section titled “エラーの表示”コンパイルできない書き方をしていた場合は、位置情報つきの日本語のエラーが表示されます。エラーの番号から参照したいときは、エラーを見てください。
4. シーンへの配置
Section titled “4. シーンへの配置”できたスクリプトを、シーンの GameObject にドラッグします。UdonBehaviour が付き、そこにプログラムアセットが結び付きます。Inspector には、フィールドの宣言がそのまま表示されます。
Add Component から Udon Behaviour を選び、プログラムアセットを指定することで追加もできます。



5. 動作の確認
Section titled “5. 動作の確認”Play を押すと Unity 内で動作確認できます。また、ワールドをアップロードして確認できます。
プロジェクトに置かれるファイル
Section titled “プロジェクトに置かれるファイル”パッケージを導入すると、Assets/TsukimiCode/IsExternalInit.cs が 1 つ置かれます。record と init を使うために C# コンパイラが要求する型で、Unity には含まれていません。同じ型を既に持っているプロジェクトには置きません(重複定義になるためです)。
配置は初回の 1 度だけです。削除しても再生成はされません。
このファイルを削除すると、record や init を使っているスクリプトがコンパイルできなくなります。エラーは 定義済みの型 System.Runtime.CompilerServices.IsExternalInit が定義されていません です。復元するには、次の内容の .cs を Assets 内に置いてください。
namespace System.Runtime.CompilerServices{ internal static class IsExternalInit { }}配置先は Assets 内ならどこでも構いませんが、注意点が 2 つあります。
Assets/Pluginsの中には置かないでください。別のアセンブリになるので適用されません。- アセンブリ定義(
.asmdef)を作ってその中にスクリプトを置くなら、そのアセンブリにも同じ型が必要です。型はアセンブリごとに必要です。T# Script を作ったときにアセンブリ定義が一緒に作られた場合は、同じフォルダに配置されているため対処は不要です。
同梱のサンプル
Section titled “同梱のサンプル”メニューの TsukimiCode から Import Samples を押すと、Assets へインポートされます。インポートされるサンプルは 1 つで、シーンが 2 つ含まれています。シーンを開いて Play で実行します。

| シーン | 中身 |
|---|---|
| Showcase | 書き方を 1 つずつ示すサンプルが並んでいる |
| FloorGlow | 床がプレイヤーの足元で光る。単体で切り出したサンプル |
