2015年11月15日日曜日

[Unity3D] ユニティちゃんたちのアニメーションを分離するスクリプト

Animation Duplicator for Unity

ゲームエンジン・Unity3D(以下Unity)のエディターを拡張するスクリプト Animation Duplicator をつくりました。
Animation Duplicator はUnityのアニメーションのコピーを作成するツールです。


開発のきっかけ

Unityにアニメーション付きFBXをインポートするとアニメーションにRead Onlyのロックがかかり編集出来ません。

アニメーションを選択してCtrlキーを押しながらDキーを押すとアニメーションのコピーが作られ編集出来るらしいのですが、Blenderで自作したアニメーションは自分の環境ではコピーできませんでした。
Ctrl + Dでコピーできないアニメーションもコピーしたかったので作ってみました。


インストール

C#のスクリプトをUnityのプロジェクトに追加します。

AnimationsDuplicator.cs


このスクリプトをAnimationsDuplicator.csというファイル名でUnity EditorのProjectウィンドウに追加するとWindowメニューに Animations Duplicator が追加されます。


使い方

Windowメニューから Animations Duplicator を起動します。
"Source Object" にアニメーションを含むゲームオブジェクトをドラッグ&ドロップしてDuplicate ボタンをクリックするとAnimationだけのファイルが保存されます。

下の画像はBlendeで10個のアクションを含むFBXファイルをUnityにインポートしたものです。
Ctrl + Dで分離できなかったオブジェクトです。

Animation DuplicatorでDuplicateしました。同じフォルダーに「元のアニメーション名_1」というファイルを作りました。
既に「元のアニメーション名_1」と同じファイル名がある場合は上書き防止のためファイルを作りません。

Unityちゃん付属のアニメーションのコピーも作りました。

これで「Read Only」が解除されて編集できるようになりました。

マスコットアプリ文化祭2015バージョン

公開終了しました。


字下げスタイルの宗教戦争

Animation Duplicator を公開するにあたり、C# のコーディング規則を可能な限り遵守しました。
C# のコーディング規則
https://msdn.microsoft.com/ja-jp/library/vstudio/ff926074.aspx
個人的にはブロック開始の中括弧「{」で改行するコーディングはしません。
改行が多くてソースを読むのにスクロール操作を多用するのが嫌でVisual Studioを自動改行禁止に設定しています。

突然ですが、Unityアセットをたくさんインポートしたら同じクラス名のスクリプトが名前衝突してゲームが動かなくなってしまった経験はないでしょうか?
スクリプトにnamespace(名前空間)さえ設定されていたらクラス名の名前衝突によるトラブルは防げたはずです。

しかしクラス名が重複してゲームが動かなくなるUnityアセットのように、Animation Duplicator が使う人の環境を壊してしまっては大変です。(壊すことはないと思いますが)
自分の好みに拘りすぎて中括弧を改行しなかった結果、スクリプトに綻びができては意味がありません。
今回は公開するにあたり、自分の好みを曲げて Animation Duplicator にC# のコーディング規則を適用し中括弧を改行することにしました。
ただし中括弧改行派に改宗したわけではありません


関連ブログ


以上、参考になれば幸いです。

2 件のコメント:

  1. こういうスクリプトを探していました!
    ありがとうございます!

    返信削除
    返信
    1. コメントありがとうございます

      削除

注: コメントを投稿できるのは、このブログのメンバーだけです。