こんにちは「DOTweenの教科書」執筆者のオオバです。
AnimationClipは、
Unity上でアニメーションを作成できる、
メイン機能のひとつです。
使う人は本当によく使うのではないでしょうか。
ちなみにオオバもよく使います。
ところでゲーム開発をしていると、
AnimationClipが再生できなくなった!!
という事件が発生しませんか?
よく目にする原因の第1位は、
「AnimationClipが参照するオブジェクトの参照外れ」
複数人で開発していると、
悪気はないけどPrefabの階層を変えてしまって、
AnimationClipが動かなくなる悲しき出来事。

このようにMissing!
という表示に焦ります。
色々試行錯誤するも動かない理由がわからない。
最終的に、、、

っていう感じになった経験が何度かあります。
最悪作り直し
「今までお前に費やしてきた時間を返してくれ」
そんな絶望感に襲われながら、
最初からキーフレームを打った日々がありました。
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
AnimationClipを破壊する3つポイント
何をしたらAnimationClipが壊れるのかを
理解することが大事です。
次の3つは必ず覚えておきましょう。
この行為をすると100%AnimationClipを壊せます。
- 階層構造の変更で破壊
- 名前変更で破壊
- ターゲット名の変更で破壊
これから、なぜこの3つの方法でAnimationClipを、
壊しながら説明してきます。
これから壊すAnimationClipはコチラ
ヒエラルキーの状態

Root(Animator)
└── Parent
└── Child
└── GrandChild
└── GrandSon
このようなヒエラルキーで、
RootにAnimatorをAddComponentしています。
👉 今さら聞けないUnityのヒエラルキー(Hierarchy)とは?
Animationウィンドウの状態

Animationウィンドウです。
RootのAnimatorには、
AnimationClipTestAnimation.anim
を
1つだけセットしています。
この状態のAnimationClipをこれから3つの方法で壊していきます。
1. 階層構造の変更で破壊
AnimatorをAddComponentしたGameObject配下の
階層構造を変更するとAnimationClipを破壊します。
破壊前 | 破壊後 |
---|---|
![]() | ![]() |
このようにGrandSon
をGrandChild
と同じ階層に移動させました。

するとAnimationウィンドウでは、
このようにGrandSon
がMissing!
となり、
GrandSon
はアニメーションしなくなります。
Q.直す方法はありますか?
A.ヒエラルキー上で階層を元に戻せば直ります
【小ネタ】AnimationClipファイルを直接編集して直す方法
TestAnimation.anim
をテキストエディタで開きます。
~~~~~~~ 略 ~~~~~~~
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.z
path: Parent/Child/GrandSon
classID: 4
script: {fileID: 0}
~~~~~~~ 略 ~~~~~~~
path
プロパティがGameObjectの階層を表しています。
- 破壊前 :
Parent/Child/GrandChild/GrandSon
- 破壊後 :
Parent/Child/GrandSon
path:
を破壊前の状態に修正することで、
AnimationClipは元通り動くようになります。
※注意 Unity外でのファイル編集は、
ファイルの破損を招く可能性があるため、
Unityを閉じてから行うと安全です。
2. GameObject名の変更で破壊
AnimatorをAddComponentした
GameObject配下のGameObject名を変更すると破壊します。
破壊前 | 破壊後 |
---|---|
![]() | ![]() |
GameObject名をChild
からChildren
に変更。

すると元の名前ChildがMissing!になります。
Q.直す方法はありますか?
A.名前を元に戻せば直ります
3. ターゲット名の変更で破壊
Animationウィンドウで、
ターゲット名の変更をすると破壊します。
ここでいうターゲット名とは、
アニメーションさせるGameObject名のことです。
Animationウィンドウ上で、
ターゲット名を変更する方法を紹介します。
【手順】ターゲット名を選択してEnterキー押下

Animationウィンドウ上からターゲット名を選択して、
Enterキーを押下します。
するとターゲット名を編集できます。
試しに、ここではChild
をChildren
にリネーム。

このようにChildrenというGameObjectが見つからないため、
Missing!になります。
Q.名前を元に戻せば直るんでしょ?
A.直りません。
そう名前を元に戻すだけでは直らないのです。
階層関係も元に戻す
ここからはAnimationウィンドウで
ターゲット名を変更したAnimationClipを
直す方法を紹介していきます。
そもそも階層も変更している
破壊前 | 破壊後 |
---|---|
![]() | ![]() |
気づいて欲しいのが、
なぜかChildren
とGrandChildが同じ階層になっています。
そう、階層が変わってしまっているのです。
ためしにChildren
を元のChild
に名前を戻してみます。

すると本来GrancChildの親階層であるはずなのに、
子階層になってしまいます。
AnimationClipの中身を確認
TestAnimation.anim
を、
テキストエディタで開いて確認してみます。
m_PostInfinity: 2
m_RotationOrder: 4
attribute: m_LocalPosition.x
path: Parent///Child
classID: 4
script: {fileID: 0}
path
がおかしなことになっています。
- 破壊前 :
path: Parent/Child
- 破壊後 :
path: Parent///Child
このスラッシュは階層を表しています。
Animationウィンドウでターゲット名を変更すると、
階層が1つ深くなってしまう不具合があるようです。
階層をもとに戻して解決
path: Parent///Child
をpath: Parent/Child
に
変更して保存するとAnimationClipは直ります。
困った時はAnimationClipの中身を
テキストエディタなどで確認してみると良いでしょう。
まとめ
AnimationClipを壊す3つの方法と、
それを直す方法について紹介してきました。
- 階層構造の変更で破壊 =>【解決方法】名前を戻す
- 名前変更で破壊 => 【解決方法】名前を戻す
- ターゲット名の変更で破壊 => 【解決方法】AnimationClipをテキストエディタpathを編集
この3種類はAnimationClipを扱う人は、
覚えておいたほうが良いでしょう。
実際にAnimationClipを扱わないが、
AnimationClipを扱うメンバーがいる
チームリーダー向けにも伝えたいことがあります。
できる限りプロジェクトは壊れない方が良いですよね。
トラブルに時間が割かれるのは本当に時間の無駄。
そこで、壊れにくいプロジェクト状態にするには、
まず何をしてはいけないのか?を知る必要があります。
Unityの理解度はメンバー毎に全く違うということを、
チーム開発で実感します。
自分の当たり前はメンバーには通用しません。
堅固で壊れにくい開発環境を構築するためには、
壊す方法を知るところからです。
「何をしてはいけないのか?」
「何をしたら壊れるのか?」
こういったノウハウを共有し、
チームレベルを上げながら開発することが大事。
今回はAnimationClipを取り上げました。
ついつい、Unity歴の浅いメンバーが
サクッとGameObject名を変更して、
サクッとAnimationClipを壊してしまうこともあるでしょう。
そうならないためにも、
本記事を参考に開発ルールを
作ってみてはいかがでしょうか。

この記事が気に入ったらフォローしよう
- Unity5.3.4f1