概要
Hierarchy上でのオブジェクトの階層を変えたことによって起きるAnimationのmissingを修正します
背景
Unityのアニメーションを編集中に、ヒエラルキー上で階層を変更するとAnimationのプロパティに黄色文字のMissing!が表示され、うまく動かなくなってしまいます。
その都度手動でAnimation側のプロパティ名を変更する必要がありました。
こりゃめんどいぞということで拡張作りました
デモ
実装
https://github.com/sukedon/AnimationValidator
コード全文はこちらにあります。
animとオブジェクトの紐付け
そもそもなんでmissingになるんだろうっていうので.animファイルの中身を見てみたんですが、アニメーションで動かすオブジェクトは名前で取得しているんですね。上の画像のPathというプロパティでオブジェクトを探して紐付けているようです。ヒエラルキー上のオブジェクトのguidで紐付けているわけではないようです。
Missingになったオブジェクトの見つけ方
Pathの値で親のオブジェクトからFindをし、nullだったらMissing。
Missingの修復方法
オブジェクトの名前を元にanimation側のパスを直すようにしました。
なので、
- animationで制御するオブジェクトの子階層のオブジェクトは、全て名前が一意になっている必要がある
という条件がついてしまいます。
参考にさせていただいた記事
AnimationClipからPathを取り出すところは下記の記事を参考にさせてもらいました。
Unity 壊れたAnimationClipを少しリカバリーしてみるEditor拡張
http://www.shibuya24.info/entry/2016/03/11/090000
github
https://github.com/sukedon/AnimationValidator
改善点等ありましたらプルリクをお待ちしておりますm(__)m