Unity
Unity拡張

【Unity】Animationのmissingを自動で修正するエディタ拡張

More than 1 year has passed since last update.


概要

Hierarchy上でのオブジェクトの階層を変えたことによって起きるAnimationのmissingを修正します


背景

Unityのアニメーションを編集中に、ヒエラルキー上で階層を変更するとAnimationのプロパティに黄色文字のMissing!が表示され、うまく動かなくなってしまいます。

その都度手動でAnimation側のプロパティ名を変更する必要がありました。

こりゃめんどいぞということで拡張作りました


デモ

demo_1.gif


実装

https://github.com/kyorosuke/AnimationValidator

コード全文はこちらにあります。


animとオブジェクトの紐付け

image.png

そもそもなんでmissingになるんだろうっていうので.animファイルの中身を見てみたんですが、アニメーションで動かすオブジェクトは名前で取得しているんですね。上の画像のPathというプロパティでオブジェクトを探して紐付けているようです。ヒエラルキー上のオブジェクトのudidで紐付けているわけではないようです。


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/kyorosuke/AnimationValidator

改善点等ありましたらプルリクをお待ちしておりますm(__)m