コンテンツにスキップ

クイックスタート

導入してから、最初の Behaviour がワールドで動くまでの順を追います。

VRChat Worlds SDK(Udon)を導入した Unity 2022.3 のプロジェクトが必要です。SDK を導入していないプロジェクトでは、実行環境の API を参照できないため動作しません。

順やること
1VPM の一覧として https://zz-roba.github.io/tsukimi-vpm/index.json を追加する
2パッケージの一覧から TsukimiSharp(T#) を選んで導入する

VCC と ALCOM は手順が同じです。

VCC の設定で、パッケージの一覧のアドレスを追加したところ

ALCOM で同じアドレスを追加したところ

配布ファイルは zip 形式です。展開して出てくる .tgz を、Unity の Package Manager(Window > Package Manager)の Add package from tarball で追加します。このボタンは Unity の Package Manager にあるもので、VCC と ALCOM にはありません。

導入すると、コンパイラとエディタ拡張のほかに、AI クライアントから使う MCP サーバと、AI 向けの指示ファイルが同梱されます。このページの手順では設定の作業はありません。MCP サーバを使うときだけ、MCP サーバの設定の操作が別に必要です。

Project ビューで右クリックし、Create から T# Script を選びます。

Project ビューの右クリックから Create、T# Script を選ぶところ

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

名前を決めるウィンドウ

保存先は Assets の中のフォルダです。Assets の直下は、専用のアセンブリ定義を置けないため、作成が中止されます。

そのフォルダの上にアセンブリ定義が 1 つも無いときは、アセンブリ定義と IsExternalInit.cs が同じフォルダに作られます。この 2 つは新しい構文を使うために必要なものです。すでに .cs があるフォルダでは、別のアセンブリに分けてよいかの確認が表示されます。

できたファイル

生成されたファイルは、通常の C# として読めます。Tsukimi.TsukimiBehaviour を継承したクラスが 1 つあり、そこに実行環境が呼ぶイベントを書いていきます。

保存すると自動的にコンパイルされます。成功すると、プログラムアセットに結果が表示されます。命令数と extern の数、生成された Udon のアセンブリも同じところで読めます。

コンパイルが通ったときの表示

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

コンソールに出たコンパイルの記録

コンパイルできない書き方をしていた場合は、位置情報つきの日本語のエラーが表示されます。エラーの番号から参照したいときは、エラーを見てください。

できたスクリプトを、シーンの GameObject にドラッグします。UdonBehaviour が付き、そこにプログラムアセットが結び付きます。Inspector には、フィールドの宣言がそのまま表示されます。

Add Component から Udon Behaviour を選び、プログラムアセットを指定することで追加もできます。

Add Component から Udon Behaviour を追加するところ

プログラムアセットを選ぶウィンドウ

付いた Udon Behaviour

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 を作ったときにアセンブリ定義が一緒に作られた場合は、同じフォルダに配置されているため対処は不要です。

メニューの TsukimiCode から Import Samples を押すと、Assets へインポートされます。インポートされるサンプルは 1 つで、シーンが 2 つ含まれています。シーンを開いて Play で実行します。

TsukimiCode のメニュー

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

サンプル集を再生したところ