「表情を変えたら戻らなくなった」「衣装を切り替えたら別のパーツが消えた」「アップロード時に Mixed Write Defaults という警告が出た」。アバター改変で起きる不可解な不具合の多くに関係しているのが、Animator の各ステートが持つ Write Defaults という設定です。この記事では、設定の意味、混在すると何が起きるか、確認と直し方の手順、ツールを使うときの注意をまとめます。根拠は VRChat Creators Docs「Avatars」の Write Defaults on States(2026年9月12日確認)です。
Write Defaults とは何か
Write Defaults は Animator Controller の各ステートにあるチェックボックスで、「そのステートのアニメーションが触っていないプロパティをどう扱うか」を決めます。公式ドキュメントの説明はこうです。
オフ: アニメーションしているプロパティの値だけを書き込みます。その値は、また別のアニメーションで動かされるまで変わりません。
オン: アニメーションしていないプロパティにも、初期値(Animator が動き出したときの値)を書き込みます。
身近な例で言うと、「帽子を消す」アニメーションを再生したあと、オフなら帽子は次に「出す」アニメーションが来るまで消えたままです。オンなら、そのレイヤーが別のステート(帽子を触らないもの)に移った瞬間、帽子は初期値(たいてい表示)に戻ります。
なぜ混在すると壊れるのか
オンとオフは、それぞれ違う前提で設計されます。オンの設計は「触っていない値は勝手に初期値へ戻る」ことを当てにし、オフの設計は「触っていない値は誰も変えない」ことを当てにしています。1体のアバターの中でこの2つが混ざると、どちらの前提も成り立ちません。
公式ドキュメントも「オフとオンのステートが両方あるアバターでは、想定外のプロパティ値が設定されることが知られている」と明記し、Write Defaults の使い方をアバター全体で統一することを推奨しています。VRChat 自身の組み込みアニメーターとサンプルはオフで作られています。
典型的な症状は次の通りです。
・表情を変えたあと、まばたきや口の形が中途半端なまま固まる
・衣装トグルで消したパーツが、表情を変えた瞬間に戻ってくる(または逆に戻らない)
・ジェスチャーを離しても手の形が残る
・アップロード時に SDK が Mixed Write Defaults の警告を出す
確認と直し方の手順
1. VRChat SDK のコントロールパネルを開き、警告を読む
→ Mixed Write Defaults の警告があれば、原因はほぼこれ
2. アバターの方針を確かめる
→ 販売アバターの説明書、または FX レイヤーの既存ステートを見る
3. 後から入れたギミックのステートを既存に合わせる
→ Animator ウィンドウでステートを選び、Inspector の Write Defaults を変更
4. Gesture Manager で表情・トグルを一通り切り替えて確認
5. 直らなければ、同じ値を複数のレイヤーが触っていないかを疑う
手順3で見る場所は、Unity の Animator ウィンドウでステート(四角いノード)をクリックしたときに Inspector に出る「Write Defaults」のチェックです。レイヤーごと、ステートごとに存在するので、ギミックを追加したレイヤーの全ステートを確認します。
手順4の確認方法は「2026年のVRChat改変ツール 目的別マップと導入する順番」で紹介している Gesture Manager が便利です。アップロードせずに Unity 内で表情とメニューを試せます。
引用記事2026年のVRChat改変ツール 目的別マップと導入する順番技術・制作
オフに統一するときの注意点
オフには落とし穴があります。公式ドキュメントは、新しく作ったステートは既定でオンになっていること、そしてオフで運用する場合でも守るべき点を挙げています。要点は「空のステートを作らない」ことです。オフのステートにアニメーションクリップが入っていないと、そのレイヤーが何も書き込まないのではなく、想定外の値を書いてしまうことがあります。
対策として広く使われているのが、どのステートにも何かしらのクリップを入れる方法です。何もしないための空のクリップでもよいのですが、「存在しないオブジェクトを2フレームだけ動かすクリップ」を入れておく作法(バッファクリップと呼ばれます)が定番です。Blend Tree を入れる形でも構いません。
オンに統一するときの注意点
オンは設定が少なくて済み、トグル1つで完結する簡単なギミックとは相性がよい方式です。一方で、あるレイヤーが「触っていない値を初期値に戻す」ため、別のレイヤーの結果を上書きしやすくなります。表情レイヤーと衣装レイヤーが同じシェイプキーやオブジェクトに触っていると、どちらが勝つかがレイヤーの順番で決まり、原因が追いにくくなります。オンで運用するなら、レイヤーごとに触るプロパティを分けることが前提です。
ツールを使うときの注意
Modular Avatar のように Animator をマージするツールや、表情メニューを生成するツールには、Write Defaults の扱いを設定できるものが多くあります。ギミックを入れる前に、そのツールの説明で「WD の設定を合わせる」項目があるかを確認してください。混在を検出して一括で揃えるツールも公開されています。
販売アバターや配布ギミックの説明書に「WD オン前提」「WD オフ前提」と書かれていることがあります。書いてあれば、それに合わせるのが一番安全です。書いていない場合は、アバター本体の FX レイヤーのステートをいくつか見て、多数派に合わせます。
落とし穴になりやすい点
直したつもりで1ステートだけ残っている: レイヤーの奥にあるサブステートマシンの中のステートは見落としやすい場所です。
オフに揃えたら別の不具合が出た: 空のステートが残っている可能性があります。全ステートにクリップか Blend Tree を入れてください。
WD は揃っているのに表情が固まる: 同じシェイプキーを2つのレイヤーが動かしています。Write Defaults ではなく設計の競合なので、片方のアニメーションからそのシェイプキーを外します。
Gesture Manager では正常なのに VRChat で壊れる: アップロード対象のアバターと、確認していたアバターが別のコピーになっていないか確認してください。
よくある質問
Q. 結局オンとオフどちらにすべきですか。
A. 公式は「どちらでもよいが統一する」としており、公式のサンプルはオフです。すでにあるアバターに合わせるのが最優先で、迷ったらオフに揃え、空ステートを作らないルールで運用するのが無難です。
Q. 警告が出ていてもアップロードはできますか。
A. 警告はブロックではないのでアップロードは通ります。ただし不具合の原因になるので、放置せず揃えることをおすすめします。
Q. 表情以外にも関係しますか。
A. 衣装トグル、髪型切り替え、小物の表示、ハンドジェスチャーなど、Animator で動かすものすべてに関係します。
Q. Animator の基本から知りたい。
A. 「アニメーションとAnimatorの基礎」と「Expression Menuの基本 アバターのメニューを理解する」を先に読むと、この記事のレイヤーやステートの話がつながります。
引用記事アニメーションとAnimatorの基礎技術・制作
引用記事Expression Menuの基本 アバターのメニューを理解するアバター
公式情報
VRChat Creators Docs「Avatars」Write Defaults on States:https://creators.vrchat.com/avatars/
