Animationのタイムラインからメソッドを呼ぶ一連の流れ

●仮に**TestController**という**Animator Controller**を作成し、IdleというStateを作成してデフォルト状態にする。
![スクリーンショット 2015-03-26 13.14.23.png](https://qiita-image-store.s3.amazonaws.com/0/17904/9b41c4e7-3d9b-a3f6-5011-dbb4e8f35335.png)

●仮に**TestAnime**という**Animation**を作成し、下記のように始点と終点に移動するアニメーションキーを打つ
![スクリーンショット 2015-03-26 13.15.30.png](https://qiita-image-store.s3.amazonaws.com/0/17904/8d5161f4-3878-e9ef-13b9-2778dc9e8659.png)
![スクリーンショット 2015-03-26 13.15.34.png](https://qiita-image-store.s3.amazonaws.com/0/17904/39a86a1a-906f-8171-f5c1-97e8dedae561.png)

●**TestController**を選択し、**TestAnime**を**[Animator View]**にドラッグアンドドロップする。
●**[Animator View]**上で**Idle**から**TestAnime**に対して条件なしのTransitionのを設定
![スクリーンショット 2015-03-26 13.28.23.png](https://qiita-image-store.s3.amazonaws.com/0/17904/0c13e0bc-389c-48b2-230b-7bf9506ae9d3.png)

●**TestController**を選択し、**[Inspector]**上ににドラッグアンドドロップする。
●**TestAnimationMethod.cs**というクラスを作成する。
　*※ソースコードは最下段にあり*
●**TestAnimationMethod.cs**を選択し、**[Inspector]**上ににドラッグアンドドロップする。
![スクリーンショット 2015-03-26 13.35.48.png](https://qiita-image-store.s3.amazonaws.com/0/17904/93f4c466-8657-8265-7b44-5a122d02f4fa.png)

●**TestAnime**を**[Animation View]**で開き、時間の少し下でマウスの右クリックを押すと
 **Add Animation Event**が表示されるのでクリックする。

![Animation1.png](https://qiita-image-store.s3.amazonaws.com/0/17904/490ce045-b3ed-c143-e9ca-ff4a9b62a856.png)

●呼び出し先(デリゲート先)のメソッドを**TestAnimationMethod.cs**のメソッドから選択する。
　**※publicになっていないメソッドは選択できないので注意**
![Animation2.png](https://qiita-image-store.s3.amazonaws.com/0/17904/cc75a165-22c4-a149-fdbc-c3d0407a0938.png)


```C#:TestAnimationMethod.cs
using UnityEngine;
using System.Collections;

public class TestAnimationMethod : MonoBehaviour {

    private GameObject ParticleObject;

    private Animator animator;
    private int _plusVal = 0;
    private float _blendTreeVal = 0.0f;

    public void EndAnimationMethod()
    {
        // アニメーション状態を取得
        AnimatorStateInfo state = GetComponent<Animator>().GetCurrentAnimatorStateInfo(0);
        // パーティクルを取得
        ParticleSystem particle = ParticleObject.GetComponent<ParticleSystem>();

        Debug.Log("アニメーションから呼ばれました");

        // Random クラスの新しいインスタンスを生成する
        

        // 0.0 以上 1.0 以下の乱数を取得する
        float redcolor = Random.Range(0.0f, 1.0f);
        float greencolor = Random.Range(0.0f, 1.0f);
        float bluecolor = Random.Range(0.0f, 1.0f);

        particle.startColor = new Color(redcolor, greencolor, bluecolor);

        // パーティクルをスタート
        particle.Play();

        // ステータス状態はIdleか？
        if(state.IsName("Idle") == true)
        {
            Debug.Log("Idle");
        }
        // ステータス状態はTestAnimeか？
        else if (state.IsName("TestAnime") == true)
        {
            Debug.Log("TestAnime");
        }
        // ステータス状態はSetValueか？
        else if (state.IsName("SetValue") == true)
        {
            Debug.Log("SetValue");
        }
        else
        {
            Debug.Log("Not Exist");
        }


        // tag1か？
        if (state.IsTag("tag1") == true)
        {
            Debug.Log("tag1");
        }
        // tag2か？
        else if (state.IsTag("tag2") == true)
        {
            Debug.Log("tag2");
        }
        // tag3か？
        else if (state.IsTag("tag3") == true)
        {
            Debug.Log("tag3");
        }
        else
        {
            Debug.Log("tag Not Exist");
        }
    }

    // Use this for initialization
    void Start()
    {
        animator = GetComponent<Animator>();
        // アニメーションをTrueにする。
        //animator.enabled = true;
    }

    // Update is called once per frame
    void Update()
    {
        // 上矢印が押されている間だけテストアニメが実行される。
        if (Input.GetKey(KeyCode.UpArrow))
        {
            animator.SetBool("GoTestAnime", true);
            _plusVal++;
            animator.SetInteger("SetText", _plusVal);
        }
        // 下矢印が押されている間だけBlendTreeが実行される。
        else if (Input.GetKey(KeyCode.DownArrow))
        {
            _blendTreeVal = _blendTreeVal + 0.05f;
            animator.SetFloat("BlendVal1", _blendTreeVal);
        }
        // 上矢印が押されていない間は動作なし
        else
        {
            if (_plusVal > 1000)
            {
                animator.SetBool("GoTestAnime", false);
                _plusVal = 0;
            }
        }
    }
}
```