MoCHI のリファレンス(試験中)
MoCHI は試験中です(書き方と生成物の形は、今後の版で変わることがあります)。 MoCHI は、VRChat のワールドに置くオブジェクトを .mochi.xml に記述し、Unity で保存したときに prefab を生成するマークアップです(位置・prefab・コンポーネント・画像や表の行による繰り返しを書けます)。
| ページ | 内容 |
|---|---|
| 構文の概観 | 要素の分類、タグと GameObject の対応、部品と props、生成時と実行時の値、展開の順序、名前のスコープ |
| 要素のリファレンス | 要素ごとの書式・置ける場所・置ける子・属性・作る物・name を書かないときの名前・エラー |
| 値の文法 | float・int・Vector3・Color・bool・パス・束縛・データ・static・列挙の EBNF と診断の番号 |
| 導入と生成 | ファイルと部品、エントリポイント、保存での生成、生成物の扱い、Play とアップロードの前の検査 |
| props と同一性 | props の渡し方、同一性と key |
| コンポーネントと prefab | コンポーネント、マテリアルの複製、prefab の中の変更、<Slot> の中身、取り付け位置 |
| コンポーネントの一覧 | 書けるコンポーネントの分類、値の型、アセットの参照、書けないコンポーネント |
| 物理のコンポーネント | Rigidbody・コライダー・ジョイントなどの属性 |
| 描画のコンポーネント | レンダラー・Light・Camera・パーティクルなどの属性 |
| 音のコンポーネント | AudioSource・リバーブ・Audio の Filter の属性 |
| UI のコンポーネント | Canvas・Image・Button・レイアウトグループなどの属性 |
| TextMeshPro のコンポーネント | TextMeshPro・TextMeshProUGUI などの属性 |
| VRChat のコンポーネント | VRCPickup・VRCObjectSync・VRCMirrorReflection などの属性 |
| その他のコンポーネント | Animator・コンストレイント・NavMesh などの属性 |
| レイアウト | size と pivot、<Row> と <Grid> の並べ方、部品の大きさ |
| T# スクリプトを持つ部品 | 生成される <Name>.Mochi.cs、実行時の props、2 段の生成 |
| inspect | MCP の inspect に mochi を渡したときの引数と、返す JSON |
| エラー | 診断の番号の一覧と、エラーになる例 |
| 収録先 | TsukimiSharp(T#)と同じ Unity のパッケージです。MoCHI のために別のパッケージを導入する必要はありません |
| T# との関係 | 部品に動き(ワールドの実行中の処理)を付けるときだけ、T# でスクリプトを書きます(T# スクリプトを持つ部品)。スクリプトを付けない部品だけで作るなら、T# のコードを書く必要はありません |
| AI からの確認 | MCP サーバの inspect に mochi 引数を渡します(inspect) |
<Gallery prefab="true"> <Object name="Wall" position="0 1.5 4" rotation="0 180 0"> <For each="art" in="folder('art/')"> <Frame key="{art.key}" image="{art.file}" position="0 0 0"/> </For> </Object></Gallery><!-- file: Assets/Gallery/Frame.mochi.xml --><Frame> <Props> <Prop name="image" type="Texture"/> </Props> <Object name="Canvas"> <MeshFilter mesh="builtin:Quad"/> <MeshRenderer material="../Art/Frame.mat" mainTexture="{image}"/> </Object></Frame>| 部分 | 役割 |
|---|---|
prefab="true" | このファイルから prefab を生成することを示す属性です。このファイルがエントリポイントになります |
<Object> | GameObject を 1 つ作ります |
<For each="art" in="folder('art/')"> | art/ フォルダの画像 1 枚ごとに、中身を繰り返します |
<Frame …/> | 部品 Frame(Frame.mochi.xml)を置きます |
{art.file} | 繰り返しの行の列 file を読む束縛です |
<Props> | 部品が受け取る値(props)の宣言です |
<MeshRenderer … mainTexture="{image}"/> | コンポーネントを足します。mainTexture を書くと、.mat を複製して画像を設定します |
| 表記 | 意味 |
|---|---|
samples/ から始まる例 | エラーにならず、prefab の生成まで進む例です |
rejected/ から始まる例 | エラーになる例です。出る診断の番号を本文に添えてあります |
<!-- file: … --> | 例のファイルの区切りです。最初のファイルがエントリポイントで、パスはプロジェクトのルートからの相対パスです |
| 例の無い記述 | Unity の中での生成の動作など、エラーになるかどうかでは確認できない内容です |
例が参照するアセット
Section titled “例が参照するアセット”例が参照するアセットは次の 6 個です。
| パス | 中身 |
|---|---|
Assets/Kit/KitFrame.prefab | ルート KitFrame の下に Canvas(MeshFilter と MeshRenderer)・Plate(その下に Label)・Mount |
Assets/Kit/KitRoom.prefab | ルート KitRoom の下に Floor・Mount1・WallEast(その下に Mount0 と Mount3)・Mount2・Door |
Assets/Art/Frame.mat | Standard シェーダーのマテリアル |
Assets/Gallery/art/01_Sea.png | 画像 |
Assets/Gallery/art/02_Moon.png | 画像 |
Assets/Data/art.csv | 列は id・file・title。行は sea と moon の 2 行で、file は上の 2 枚の画像を指します |