渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

【Unity】アニメーションイベントで渡せる型は6種類

【Unity】アニメーションイベントで渡せる型は6種類

こんにちは「DOTweenの教科書」執筆者のオオバです。

アニメーションイベントとは、AnimationClip内の任意のタイミングでイベントを発行することができる機能です。

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

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

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

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

  1. 引数なし
  2. float型
  3. int型
  4. bool型
  5. string型
  6. 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;  
}

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

【Unity】アニメーションイベントで渡せる型は6種類_0

まとめ

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

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

「2つ以上の引数」、「クラス」、「コレクション」は
アニメーションイベントの引数にすることはできません。

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

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

オススメ記事
検証環境
  • Unity5.2.1