こんにちわ、Unityエンジニアのオオバです。

AnimationEventとは、AnimationClip内の任意のタイミングでイベントを発行することができる機能です。

ここでいう 「イベント」 とは、
「任意のコンポーネントのメソッド実行」 です。

言い換えると、特定のタイミングで特定のpublic関数を実行することができます。

イベントの準備はプログラマが行い、非プログラマがアニメーションを作りながら、イベントの登録をするというような協業を可能にします。

関数には引数が渡せるのですが条件があります。
以下渡すことが出来る引数。

  1. 引数なし
  2. float型
  3. int型
  4. bool型
  5. string型
  6. Enum型

逆にできそうで出来ない引数の条件はこちら。

以下のコンポーネントをAnimationEventとして設定してみます。

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;  
}

すると以下のようにサジェストされます。

【Unity】AnimationEventで渡せる型は6種類_0

まとめ

  1. 引数なし
  2. float型
  3. int型
  4. bool型
  5. string型
  6. Enum型

AnimationClipの引数は全部で
上記の6種類であるということを紹介しました。

「2つ以上の引数」、「クラス」、「コレクション」は
AnimationEventの引数にすることはできません。

AnimationEventの設定は、
AnimationClip(.animファイル)内に保存されます。
テキストエディタで開いて確認してみてください。

また、Enum型は内部的にはint型で保存されます。

期間限定 最大95%オフセール
効率UPメガバンドル開催中!最大95%オフ!!!
期間 : 11月1日午後15時59分まで
オススメ記事
検証環境
参考サイト