Unityアニメーションバンドルアセットの中身を素早く確認するためのAnimatorController切り替えスクリプト
見出し画像

Unityアニメーションバンドルアセットの中身を素早く確認するためのAnimatorController切り替えスクリプト

Unityのアセットストアから購入したアニメーションバンドル品。
大量にアニメーションが入っているのはよいが、それを自身が使いたい3Dモデルにあてはめてどんな動きになるか確認したい場合、1個ずつアニメーションをオブジェクトにアタッチして……という作業が面倒くさい。
なので楽に確認する方がないか調べてシンプルなスクリプトを書いた。

仕様

右クリックを押すと登録したアニメーターコントローラーが順々に切り替わっていく ※Humanoid型限定 ※ついでにログもだす。

環境 Win10 + Unity 2019.4.22f1 (64-bit)

スクリプトソース

ChangeAcon.cs 


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeAcon : MonoBehaviour
{
	[SerializeField]RuntimeAnimatorController[] controller;
	private int index = 0;
	private int a_max = 0;
	Animator animator;

	void Start()
	{
		animator = this.GetComponent<Animator> ();
		a_max = controller.Length;
	}

	void Update()
	{
		if(Input.GetButtonDown("Fire2")){//右クリック押すごとにコントローラーをチェンジ
			animator.runtimeAnimatorController = controller[index];
			Debug.Log(controller[index].name);//Debugコンソールに要素名出力
			index++;
			if(index == a_max){index = 0;}
		}        
	}
}

※エラー処理を入れていないシンプルな例

スクリプト使用方法

アニメーションを切り替えたいオブジェクト(Animatorが存在するオブジェクト)のコンポーネントにアタッチするだけ。アタッチしたら、そのコンポーネントのControllerのパラメータに確認したいアニメーターコントローラーを一括ドラック&ドロップ。
下図の辺りに落とすと一括で登録できる。

画像1

インスペクターウィンドウをロックしておくとやりやすい。

今回は右クリックを押すとアニメーションコントローラーが切り替わる仕様だけど用途に応じてカスタムしていく。

使用するとこんな感じ。


アニメーションの初期座標へのリセット考慮すると(初期座標x,y,z=0,0,0とする) 
ChangeAcon.cs    ※Ver.02

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeAcon : MonoBehaviour
{
   [SerializeField]RuntimeAnimatorController[] controller;
   private int index = 0;
   private int a_max = 0;
   private Vector3 default_pos = new Vector3(0f, 0f, 0f);
   Animator animator;

   void Start()
   {
       transform.position = default_pos;
       animator = this.GetComponent<Animator> ();
       a_max = controller.Length;
   }

   void Update()
   {
		if(Input.GetButtonDown("Fire2")){
			transform.position = default_pos;
			animator.runtimeAnimatorController = controller[index];
			Debug.Log(controller[index].name);
			index++;
			if(index == a_max){index = 0;}
		}        
   }
}

使用するとこんな感じ。

参考

コンソールのデバッグログをゲーム画面表示については
https://qiita.com/_udonba/items/0b4db4fd35a27d58b6d7
こちらの記事のCatchLog.csを使用させてもらった。

コントローラ切り替えの参考にした記事はこちら
https://robamemo.hatenablog.com/entry/2017/07/06/114102

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
何かしら作る系兼業エンジニア。 裏方として100人以上のクリエイターと関わりコンテンツを制作してきました。 ひそかにゲーム制作をしています。Arcanite Links: https://arcanite-links.wixsite.com/game Noteはその備忘録。