アバター改変の解説 第8回

メニューでオンオフするギミックを作る

帽子をメニューで出したり消したりするギミックを、Animator から自分で組みます。オンとオフのクリップ、コントローラーとレイヤー、トランジション、パラメーター、メニュー、アバターへのつなぎ方まで、1クリックずつ順に解説します。

公開 · 対象は Unity の Built-in Render Pipeline と VRChat のアバター(Avatars 3.0)です。2026年11月時点の内容です。

こんなときに読んでください

  • 帽子やメガネ、羽などの小物を、メニューから出したり消したりしたい。
  • Modular Avatar の Create Toggle で済ませていたが、中で何が起きているのか知りたい。自分で組めるようになりたい。
  • 自分で組んだ Animator を、アバターをこわさずにつなぎたい。
  • オンオフが一拍遅れる、ワールドを移ると戻る、ほかの人には見えない。

この回は、第6回 Animator のしくみ と 第7回 アニメーションを作る を読んだ前提で進めます。レイヤー・ステート・トランジション・パラメーターの意味は、そちらで説明しています。

作るもの

アバターの頭に付けた帽子(Hierarchy の名前は Hat とします)を、Expressions Menu(VRChat で開くメニュー)の「帽子」でオンオフします。名前は例です。自分のアバターの小物の名前に読みかえてください。

作るものは、次の5つです。クリップ2つ、コントローラー1つ、パラメーター1つ、メニューの項目1つ。最後に Modular Avatar(MA)で、これらをアバターにつなぎます。

  1. メニューの「帽子」押すと HatOn を true にする
  2. パラメーター HatOnBool(true か false)
  3. FX のレイヤー HatOFF から ON へ移る
  4. クリップ Hat_ONHat の Is Active を 1 と書く
  5. 見た目帽子が出る

作る前に、アバターのフォルダか Unity のプロジェクトを丸ごと書き出して、元に戻せるようにしておきます。

作ったファイルは、アバターのフォルダとは別の、自分用のフォルダにまとめます。たとえば Project で Assets を右クリックして Create → Folder を選び、MyGimmicks/Hat を作ります。アバターを更新したときに、上書きされないためです。

コントローラーとレイヤーを作る

帽子のためだけの Animator Controller(コントローラー)を作ります。アバターがもともと持っている FX のコントローラーには手を入れません。FX などのレイヤーの役目は 第6回 Animator のしくみ を見てください。

  1. Project の MyGimmicks/Hat を右クリックして Create → Animation を選び、Hat_ON という名前のクリップを作ります。同じように Hat_OFF も作ります。中身は次の節で録画します。先に作るのは、ステートに入れるためです。
  2. 同じフォルダを右クリックして Create → Animator Controller を選び、Hat_FX という名前にします(Unity のバージョンによっては Create → Animation の中にあります)。
  3. Hat_FX をダブルクリックします。Animator ウィンドウ(Window → Animation → Animator)が開きます。
  4. 左上の Layers タブを押します。Base Layer が1つあります。これは空のまま使いません。
  5. Layers の右の + を押して、レイヤーを足します。名前を Hat にします。
  6. Hat の右の歯車を押して、Weight を 1 にします。足したレイヤーは Weight が 0 で作られます。0 のままだと、このレイヤーは何も書きません。
  7. 左上の Parameters タブを押し、+ から Bool を選びます。名前を HatOn にします。大文字と小文字まで、あとでメニューに入れる名前と同じにします。
  8. Layers タブに戻り、Hat レイヤーを選びます。Project から Hat_OFF を Animator ウィンドウの何もないところへドラッグします。Hat_OFF というステートができます。最初に置いたステートはオレンジ色になり、このレイヤーで最初に入るステートになります。
  9. 続けて Hat_ON もドラッグして、ステートを作ります。こちらは灰色です。
  10. もし Hat_ON がオレンジ色になったら、Hat_OFF を右クリックして Set as Layer Default State を選びます。
再現図:Animator ウィンドウ(Hat_FX)。並びや見た目は簡単にしています。名前は例です
  1. 歯車から Weight を 1 にします。0 のままだと、メニューを押しても何も変わりません。
  2. Bool のパラメーターです。チェックの欄は、いまの値(false)を表しています。
  3. オレンジ色のステートから始まります。はじめは帽子を消しておくので、Hat_OFF をオレンジ色にします。

オンとオフのクリップを録画する

帽子を出すクリップと、消すクリップの中身を、録画で作ります。録画のしかたは <a href="/avatar-tips/animation-clip/#record">第7回 アニメーションを作る</a> でくわしく解説しています。

  1. Hierarchy で Hat を選び、Inspector のいちばん上の名前の左のチェックを外して、オフにしておきます。はじめは帽子を消しておく、という意味です(あとで決める Default と合わせます)。
  2. Hierarchy でアバターのいちばん上(VRC Avatar Descriptor が付いているオブジェクト)を選びます。Inspector の Animator の Controller の欄に、Project から Hat_FX をドラッグします。録画のあいだだけ入れます。Animation ウィンドウは、選んだアバターの Animator に入っているコントローラーのクリップしか開けないためです。
  3. Animation ウィンドウ(Window → Animation → Animation)を開きます。左上のクリップの名前の欄で Hat_ON を選びます。
  4. 赤い丸の録画ボタンを押してから、Hierarchy の Hat を選び、Inspector の名前の左のチェックを入れます。Animation ウィンドウに Hat : Is Active の行ができ、0 フレーム目にキー(ひし形)が打たれます。録画ボタンをもう一度押して止めます。
  5. クリップの名前の欄で Hat_OFF に切り替え、同じように録画します。今度はチェックを入れてから外して、Hat : Is Active が 0(オフ)のキーを打ちます。
  6. 録画が終わったら、Hat のチェックが外れている(録画の前に戻っている)かを確かめます。アバターのいちばん上の Animator の Controller の欄も、もとに戻します。もとが空なら、欄の右の小さな丸を押して None を選びます。

オフのクリップも作るのは、Write Defaults(クリップに無い値をどうするか)の設定に関係なく動くようにするためです。オフのステートに何も書かないクリップを置くと、Write Defaults が OFF のアバターでは、帽子がオンのまま残ります。オンとオフの両方で Is Active を書いておけば、どちらの設定でも動きます。

録画は、アバターのいちばん上を選んでから始めます。クリップには「アバターのいちばん上から見た Hat の場所」(パス)が書かれます。このパスは、あとで MA につなぐときに使います。

第7回 アニメーションを作る

トランジションを設定する

OFF から ON へ、ON から OFF へ、矢印(トランジション)を2本引きます。ここで、切り替わる条件と、切り替わり方を決めます。

  1. Hat_OFF を右クリックして Make Transition を選び、そのまま Hat_ON をクリックします。白い矢印ができます。
  2. 矢印をクリックして選びます。Inspector に、トランジションの設定が出ます。
  3. Has Exit Time のチェックを外します。
  4. Settings の左の三角を押して開き、Transition Duration を 0 にします。
  5. 下の Conditions の + を押します。左の欄が HatOn、右の欄が true になっていることを確かめます。
  6. 同じように、Hat_ON から Hat_OFF へも矢印を引きます。Has Exit Time を外し、Transition Duration を 0 にし、Conditions は HatOn が false にします。
  7. Hat_OFF と Hat_ON のステートを1つずつ選び、Inspector の Write Defaults のチェックを確かめます。2つとも同じにします。MA でつなぐときは、あとで MA がアバターに合わせてくれます。
再現図:Unity の Inspector(Hat_OFF から Hat_ON へのトランジション)。並びや見た目は簡単にしています。名前は例です
  1. 外すと、条件が合ったその時に切り替わります。
  2. 0 にすると、前のクリップと混ぜずに、すぐ次のクリップになります。
  3. HatOn が true になったら、この矢印を通って Hat_ON に移ります。

なぜ Has Exit Time を外し、Duration を 0 にするのか

Has Exit Time にチェックがあると、いまのクリップが決まった時間まで進むのを待ってから切り替わります。メニューを押してから、一拍遅れます。

Transition Duration は、前のクリップから次のクリップへ、何秒かけて混ぜながら移るかです。0 より大きいと、色や BlendShape はじわっと変わります。オブジェクトのオンオフには途中が無いので、混ぜる時間のどこかでパッと切り替わり、遅れて見えるだけです。

オンオフは「押したらすぐ変わる」のが自然なので、Has Exit Time を外し、Duration を 0 にします。Has Exit Time を外したときは、Conditions が1つも無いと Unity が警告を出します。条件を必ず入れます。

アバターにつなぐ

作ったコントローラーを、アバターの FX につなぎます。方法は2つあります。

Modular Avatar でつなぐ(おすすめ)
アバターの中に置いたオブジェクトに MA の部品を付けると、アップロードするときに、MA がアバターの FX に Hat レイヤーを足してくれます。アバターのファイルを書きかえないので、アバターを更新しても消えません。いらなくなったら、オブジェクトを消すだけです。
アバターの FX に直接足す
アバターの FX のコントローラーに、自分で Hat レイヤーを足します。MA を使わずに済みますが、アバターのファイルを書きかえます。アバターを更新すると消えることがあり、もとのギミックをこわすおそれもあります。

Modular Avatar でつなぐ手順

  1. MA が入っていなければ、VCC か ALCOM で入れます(第3回 衣装を着せる)。
  2. Hierarchy でアバターのいちばん上を右クリックして Create Empty を選び、空のオブジェクトを作ります。名前を 帽子 にします。このあと、メニューに出る名前にもなります。
  3. 帽子 を選んだまま、Inspector の Add Component を押して MA Merge Animator を探して付けます。
  4. Animator to merge の欄に、Project から Hat_FX をドラッグします。
  5. Layer Type を FX にします。
  6. Path Mode を Absolute にします。クリップは、アバターのいちばん上から録画したからです。Relative にすると、この 帽子 オブジェクトから見たパスとして読まれ、帽子が見つからなくなります。
  7. Match Avatar Write Defaults にチェックを入れます。ステートの Write Defaults を、アバターの FX に合わせてくれます。
再現図:帽子オブジェクトに付けた MA Merge Animator(英語の表示)。並びや見た目は簡単にしています。名前は例です
  1. つなぎたいコントローラーです。FX に、このコントローラーのレイヤーが足されます。
  2. アバターのいちばん上から録画したクリップなら Absolute です。帽子オブジェクトの子を録画したときは Relative にします。
  3. アバターの Write Defaults が ON か OFF かを見て、足すステートをそちらに合わせます。

MA は、表示を日本語にもできます。この記事では、英語の表示の名前で書きます。

アバターの FX に直接足すとき

  1. Hierarchy でアバターを選び、Inspector の VRC Avatar Descriptor の Playable Layers で、FX に入っているコントローラーを確かめます。
  2. Project でそのコントローラーを選び、Ctrl + D で複製します。VRC Avatar Descriptor の FX の欄に、複製したほうを入れます。もとのファイルを残しておくためです。
  3. 複製したコントローラーを開き、この記事の手順どおりに Hat レイヤー(Weight 1)、HatOn パラメーター、2つのステートとトランジションを足します。
  4. ステートの Write Defaults は、同じ FX のほかのステートとそろえます。ON と OFF が混ざると、どの値が残るか分かりにくくなります。
  5. パラメーターとメニューは、VRC Avatar Descriptor の Expressions に入っている Parameters と Menu のファイルに足します(次の2つの節)。

アバターを更新すると、FX やメニューのファイルが上書きされて、足したものが消えることがあります。そのたびに足し直すことになるので、MA でつなぐ方法をおすすめします。Write Defaults のくわしい話は、第13回 Unity と VRChat で見た目が変わる を見てください。

パラメーターを VRChat に知らせる(Expression Parameters)

Animator の中に HatOn を作っただけでは、VRChat はそのパラメーターを知りません。Expression Parameters に登録して、はじめてメニューから動かせ、ほかの人にも送られます。MA を使うときは、MA Parameters で登録します。2つのパラメーターの関係は 第6回 Animator のしくみ で説明しています。

  1. 帽子 オブジェクトを選び、Add Component から MA Parameters を付けます。
  2. パラメーターを足すボタンを押し、名前に HatOn と入れます。Animator のパラメーターと、大文字小文字まで同じにします。
  3. 型を Bool にします。
  4. Default Value(はじめの値)は、オフ(false、0)のままにします。
  5. Saved と Synced にチェックを入れます。意味は下の表のとおりです。
再現図:帽子オブジェクトに付けた MA Parameters(英語の表示)。並びや見た目は簡単にしています。名前は例です
  1. Animator の HatOn と同じ名前・同じ型にします。
  2. ワールドを移っても、アバターを着替えて戻っても、オンオフを覚えておきます。
  3. ほかの人に値を送ります。外すと、帽子は自分にしか見えません。
設定入れたとき入れないとき
Saved(覚えておく)ワールドを移っても、アバターを着替えて戻っても、最後の値のままワールドを移ったり、アバターを着替えたりすると、Default に戻る
Synced(同期する)ほかの人にも値が送られ、同じ見た目になる。同期できる量(256 bit)を使う。Bool は 1 bit自分の画面だけで変わる。ほかの人には Default のまま見える。量は使わない
Default(はじめの値)はじめて着たときや、Saved を入れていないときに戻る値。帽子をはじめから出したいなら、オン(true、1)にする—

Default をオンにしたときは、Hierarchy の Hat もオンにしておきます。Unity の見た目と、はじめの値がそろいます。

アバターの FX に直接足すときは、VRC Avatar Descriptor の Expressions の Parameters に入っているファイルを選びます。Inspector で行を足し、名前 HatOn、型 Bool、Default、Saved、Synced を同じように決めます。

パラメーターのくわしい決まりは、VRChat の Animator Parameters のページ(新しいタブで開きます)(英語)にあります。

最後に、VRChat で開くメニュー(Expressions Menu)に「帽子」の項目を足します。メニューとパラメーターの関係は 第6回 Animator のしくみ で説明しています。

  1. 帽子 オブジェクトを選び、Add Component から MA Menu Installer を付けます。メニューのどこに入れるかを決める部品です。何も選ばなければ、いちばん上のメニューに入ります。
  2. 続けて Add Component から MA Menu Item を付けます。メニューの1つの項目になる部品です。
  3. Type を Toggle にします。押すたびにオンとオフが入れかわる項目です。
  4. Parameter に HatOn と入れます(一覧から選べるときは選びます)。
  5. Value は 1 のままにします。Toggle は、オンにすると Parameter をこの値にし、オフにすると 0 に戻します。Bool では、1 が true、0 が false です。
再現図:帽子オブジェクトに付けた MA Menu Installer と MA Menu Item(英語の表示)。並びや見た目は簡単にしています。名前は例です
  1. 押すたびに、オンとオフが入れかわります。
  2. Animator と MA Parameters と同じ名前にします。1文字でも違うと動きません。
  • メニューに出る名前は、オブジェクトの名前(帽子)になります。アイコンも付けられます。
  • MA のバージョンによっては、MA Menu Item にも Saved などの欄があります。この記事では、MA Parameters で決めた設定を使います。
  • 1つのメニューに置ける項目は 8 つまでです。いっぱいのときは、Sub Menu(中にもう1つメニューを開く項目)にまとめます。
  • アバターの FX に直接足すときは、VRC Avatar Descriptor の Expressions の Menu に入っているファイルを選び、Inspector の Add Control を押します。Name に「帽子」、Type に Toggle、Parameter に HatOn を入れます。くわしくは VRChat の Expressions Menu のページ(新しいタブで開きます)(英語)にあります。

動かして確かめる

メニューの「帽子」を押してから、作り方のチェックを外してみてください。自分から見た姿と、ほかの人から見た姿がどう変わるか、その理由が出ます。

自分から見たあなた

ほかの人から見たあなた

Expressions Menu
作り方

メニューの「帽子」がオフなので、HatOn は false です。Hat_OFF のステートにいて、帽子は消えています。

自分からは帽子が見えません。ほかの人からは帽子が見えません。

Gesture Manager で試す

アップロードする前に、Unity の中で試します。Gesture Manager は、Unity で再生したときに VRChat のメニューやハンドサインをまねできる道具です。VCC か ALCOM で、プロジェクトに入れておきます。

  1. Unity の上のメニューの Tools → Gesture Manager Emulator を選びます。シーンに GestureManager というオブジェクトができます(バージョンによって、メニューの場所や名前が違うことがあります)。
  2. 上の再生ボタン(▶)を押します。MA がこのときに Hat レイヤーを FX に足すので、再生中のアバターは、アップロードしたときと同じつながり方になります。
  3. Hierarchy で GestureManager を選びます。Inspector に、VRChat と同じ丸いメニューが出ます。
  4. Expressions を開き、帽子 を押します。Scene か Game の画面で、帽子が出ることを確かめます。もう一度押して、消えることも確かめます。
  5. 動かないときは、Gesture Manager のパラメーターを見る画面(バージョンによって名前が違います)で、HatOn が変わっているかを見ます。変わっていなければメニューかパラメーター、変わっているのに帽子が出なければ、レイヤーの Weight かクリップのパスを疑います。
  6. 再生ボタンをもう一度押して止めます。再生中に変えた設定は、止めると元に戻ります。

アップロードして確かめる

  1. VRChat SDK の Builder からアップロードします。手順は 第2回 アップロードのしかた と同じです。
  2. VRChat でアバターを着て、Action Menu の Expressions を開き、帽子 を押します。
  3. ワールドを移ったり、アバターを着替えて戻ったりして、オンオフが残っているか(Saved)を確かめます。
  4. ほかの人にも見えているか(Synced)は、友だちに見てもらうと確実です。

よくある困りごとと直し方

メニューを押しても何も起きない

起きること
メニューの「帽子」は押せるが、帽子が出ない。Gesture Manager で見ると、HatOn は変わっている。
原因
Hat レイヤーの Weight が 0 のままです。または、クリップのパスが帽子を指していません(MA の Path Mode が違うなど)。
直し方
歯車から Weight を 1 にします。クリップを Animation ウィンドウで開き、行が黄色く Missing になっていないかを確かめ、Path Mode を録画のしかたに合わせます。

HatOn が変わらない

起きること
メニューを押しても、Gesture Manager の HatOn が false のまま。
原因
メニューの Parameter、MA Parameters、Animator のパラメーターの名前が、どこかで違います。大文字小文字や、前後の空白も違いになります。
直し方
3か所の名前を、コピーして貼りつけてそろえます。型(Bool)もそろえます。

切り替わるのが一拍遅れる

起きること
押してから、少したって帽子が出る。消えるときも遅れる。
原因
トランジションの Has Exit Time にチェックが入っているか、Transition Duration が 0 より大きいです。
直し方
2本の矢印の両方で、Has Exit Time を外し、Transition Duration を 0 にします。

勝手に出たり消えたりし続ける

起きること
メニューを押していないのに、帽子が点滅するように出たり消えたりする。
原因
トランジションに Conditions が無く、Has Exit Time だけで移っています。
直し方
OFF から ON は HatOn が true、ON から OFF は HatOn が false の条件を入れます。

ワールドを移ると元に戻る

起きること
帽子をオンにしたのに、ワールドを移ったり、アバターを着替えて戻ったりすると消えている。
原因
パラメーターの Saved にチェックが入っていません。
直し方
MA Parameters(直接足したときは Expression Parameters)で Saved にチェックを入れて、アップロードし直します。

自分にしか見えない

起きること
自分の画面では帽子が出ているのに、友だちからは見えない。
原因
パラメーターの Synced にチェックが入っていません。または、相手のセーフティ設定でアニメーションが止められています。
直し方
Synced にチェックを入れて、アップロードし直します。相手の設定は、相手に確かめてもらいます。

オフにしても帽子が消えない

起きること
一度オンにすると、オフにしても帽子が出たまま。
原因
Hat_OFF のクリップに Is Active の行が無く、Write Defaults が OFF なので、オンのときの値が残っています。
直し方
Hat_OFF のクリップに、Hat の Is Active を 0 と書くキーを打ちます。

気をつけること

  • アバターがもともと持っている FX やメニューのファイルは、なるべく書きかえないでください。MA でつなげば、アバターを更新しても自分のギミックが残ります。
  • パラメーターの名前は、アバターのほかのギミックと重ならないものにします。同じ名前があると、2つのギミックが一緒に動きます。
  • 同じコントローラーの中で、Write Defaults の ON と OFF を混ぜないでください。MA の Match Avatar Write Defaults を使うと、アバターに合わせられます。
  • Synced にしたパラメーターは、同期できる量(合計 256 bit)を使います。自分にだけ見えればよいものは、Synced を外します。
  • 1つのメニューに置ける項目は 8 つまでです。小物が多いときは、Sub Menu にまとめます。
  • Humanoid の骨(腕や首の曲がり)は、FX のクリップでは動かしません。オブジェクトのオンオフ、BlendShape、マテリアルなどの見た目を動かします。

まとめ

  • オンとオフのクリップを2つとも作ります。Write Defaults の設定に関係なく動きます。
  • 自分用のコントローラーにレイヤーを足し、Weight を 1 にします。Bool のパラメーターと、2つのステートを置きます。
  • トランジションは、Has Exit Time を外し、Transition Duration を 0 にして、条件を入れます。
  • パラメーターは Expression Parameters(MA Parameters)に登録します。Saved は覚えておく、Synced はほかの人に送る、Default ははじめの値です。
  • MA Merge Animator・MA Parameters・MA Menu Installer・MA Menu Item で、アバターのファイルを書きかえずにつなぎます。
  • Gesture Manager で試してから、アップロードします。

続きの 第9回 段階で切り替える・少しずつ変えるギミック では、何着かから1つ選ぶギミックと、回して少しずつ変えるギミックを作ります。

アバター改変の解説の一覧