こんにちは「DOTweenの教科書」執筆者のオオバです。
アニメーションイベントとは、AnimationClip内の任意のタイミングでイベントを発行することができる機能です。
ここでいう 「イベント」 とは、
「任意のコンポーネントのメソッド実行」 です。
言い換えると、特定のタイミングで特定のpublic関数を実行することができます。
イベントの準備はプログラマが行い、非プログラマがアニメーションを作りながら、イベントの登録をするというような協業を可能にします。
関数には引数が渡せるのですが条件があります。
以下渡すことが出来る引数。
- 引数なし
- float型
- int型
- bool型
- string型
- Enum型
逆にできそうで出来ない引数の条件はこちら。
- 2つ以上の引数
Serializableアトリビュート
をつけたクラス型- 配列
以下のコンポーネントをアニメーションイベントとして設定してみます。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class SampleAnimHandler : MonoBehaviour
{
public enum AnimType {
TYPE_1, TYPE_2, TYPE_3
}
/// <summary>【実行可能】引数の無い関数</summary>
public void CallNoArg () => Debug.Log ("no arg");
/// <summary>【実行可能】float型の引数</summary>
public void SetFloat (float value) => Debug.Log (value);
/// <summary>【実行可能】int型の引数</summary>
public void SetInt (int value) => Debug.Log (value);
/// <summary>【実行可能】bool型の引数</summary>
public void SetBool (bool value) => Debug.Log (value);
/// <summary>【実行可能】string型の引数</summary>
public void SetString (string value) => Debug.Log (value);
/// <summary>【実行可能】enum型の引数</summary>
public void SetType (AnimType type) => Debug.Log (type);
/// <summary>【不可】複数引数</summary>
public void SetMultiArgs (int value1, float value2)
=> Debug.Log (value1 + " / " + value2);
/// <summary>【不可】クラス型の引数</summary>
public void SetAnimData (AnimData data) => Debug.Log (data);
/// <summary>【不可】List型</summary>
public void SetList (List<int> list) => Debug.Log (list);
}
[System.Serializable]
public class AnimData
{
public int index;
public float value;
public bool flg;
}
すると以下のようにサジェストされます。
まとめ
- 引数なし
- float型
- int型
- bool型
- string型
- Enum型
AnimationClipの引数は全部で
上記の6種類であるということを紹介しました。
「2つ以上の引数」、「クラス」、「コレクション」は
アニメーションイベントの引数にすることはできません。
アニメーションイベントの設定は、
AnimationClip(.animファイル)内に保存されます。
テキストエディタで開いて確認してみてください。
また、Enum型は内部的にはint型で保存されます。
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity5.2.1