読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

UnityのAnimatorControllerにAnimationClipを内蔵する

Unity エディタ拡張・エディタ機能 ビジュアルスクリプト・ノーコーディング 試作 アセット・ファイル管理 GUI(uGUI/NGUI/旧UI)

ことUIにAnimatorを使う場合、ほとんど使いまわす事ができずプレハブもしくはシーンに従う形でAnimationControllerが 作られ、AnimationControllerが参照するAnimationClipは参照という形を取りながら完全に専用アニメーションとして扱われ ます。

そのためAnimationControllerはシーン名もしくはプレハブ名、AnimationClipにはAnimationController名を付けるのが管理を楽にするTipsです。

 

f:id:tsubaki_t1:20150203232507p:plain

 

さて、uGUIのButtonの機能でアニメーションを作ると、AnimationControllerの中にAnimationClipが含まれるような形で生成されます。

 

f:id:tsubaki_t1:20150203230601p:plain

 

これを見て、いっそAnimationClipをAnimationControllerに内包してしまうのも悪くないと思い作ってみました。実際の動作内容はこちら。

 

f:id:tsubaki_t1:20150203231308p:plain

f:id:tsubaki_t1:20150203231320p:plain

AnimatorControllerを選択中に右クリックで「CombineAnimationclip」を選択し、ウィンドウを作成、あとはAdd new clipにAnimationClip名を入れてCreateを押すと動画が作成されます。

ちなみにAnimationControllerの持つアニメーション一覧が下の方に表示され、Removeで削除する事もできます。

f:id:tsubaki_t1:20150203231601g:plain

あとは、作成したAnimationClipをAnimatorControllerの中にD&Dで登録すればOKです。そこまで自動化しようと思いましたが、複数レイヤーあった場合(複数のアニメーションを同時に再生したい場合)面倒になるので止めました。

f:id:tsubaki_t1:20150203232235p:plain

 

※ 下のコードはUnity 5系では古いAPI使ってる扱いでエラーになるので、コピペ後に一旦Unityエディタに戻ってくださいScript Updaterが勝手に動くようにしてくれます。


ContainClip.cs

 

やっている事は単純で、AssetDatabase.AddObjectToAssetでAnimationControllerにAnimationClipを追加しています。マニュアルでは削除出来ないと書いてありますが、Object.DestroyImmediateで消せます。

 

http://docs-jp.unity3d.com/Documentation/ScriptReference/AssetDatabase.AddObjectToAsset.html