FaceEmo_EmoteOverrideExampleについて【UnityVRC】
FaceEmo_EmoteOverrideExampleはFaceemoのPrefabの中に置かないと動かない
この動きがややこしかったので記事にする
動く配置
Faceemo
┗FaceEmo_EmoteOverrideExample
動かない配置
・Faceemo
・FaceEmo_EmoteOverrideExample
原因
FaceEmo(Prefab)のMA Parametersで名前変更が行われている
すべての変数にFaceEmo_ という接頭辞がつく
いっぽうFaceEmo_EmoteOverrideExample単体では
これらのパラメータが使われる。FaceEmo_という接頭辞がついていない。これらはFaceemoで既に同名で登録されていることが期待される変数だが、しかしFaceemoはFaceemo_をつけて名前変更するので、これらの変数は見つけられない
よって実行中
SYNC接頭辞なのにLocalというおかしな状態になっている。この状態ではFaceEmo_EmoteOverrideExampleの関連変数はすべてFalseのままであり、コントローラーは動かなくなっている。
ここからが難しいのだが、
なぜFaceemoのPrefabの中にFaceEmo_EmoteOverrideExampleのPrefabを置くとうまくいくのか、それはMA Parametersの特殊な仕様のおかげである。
MA Parametersは子オブジェクトのMA Merge Animatorの関連変数をすべて抽出して表示する。ここで置き換えも同様に行われる。
仮にFaceEmo_EmoteOverrideExampleにMA Parametersを付属し、Faceemo_接頭辞をつける名前変更を行えば、このPrefabはアバターのどの場所にあっても問題はない。そのほうが(FaceemoのPrefabを都度更新していく都合上)便利かも。