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

UnityのAnimationEventに渡せる引数について

AnimationEventで渡せる引数について1年前に記事を書いたのですが、不足情報があったので追記記事を書きます。

  • float型
  • int型
  • string型
  • bool型
  • Enum型
  • 引数なしの関数ももちろん可能

このようにオオバのブログでは送信引数の型を紹介していましたが2点ほど抜けていました。

リファレンスをよく読んでみると

UnityEngine.AnimationEvent - Unity スクリプトリファレンス

AnimationEvent はアニメーションの再生の一部として、SendMessage 関数のようなスクリプトの関数を呼び出すことができます。

アニメーションのイベントは 0 と 1 の引数を持つ関数をサポートしています。 パラメーターは float、int、string、object 参照、AnimationEvent を送信することができます。

この2つもAnimationEvent時に送信できます。

※Unity5.4のリファレンスですが、Unity4.6時点で同様の内容が記述されていることを確認済みです

object参照AnimationEvent型に対応したサンプルコードです。

AnimationEventでobject参照とAnimationEvent型を送るテスト · GitHub

インスペクタUI備考
object参照
(追記)UnityのAnimationEventに渡せる引数について_0
ここで言うobject参照とはUnityEngine.Object型のこと
AnimationEvent型
(追記)UnityのAnimationEventに渡せる引数について_1
float型, int型, string型, UnityEngine.Object型のパラメータをそれぞれ1つずつ渡すことが出来ます ※AnimationEvent型はsealedクラスなのでサブクラスは作れません

まとめ

AnimationEvent型を使用するイメージは沸かないので割愛しますが、object参照を使用することはあるかもしれません。

プロジェクトウィンドウ内のUnityEngine.Objectクラスを継承したオブジェクトを予めアタッチすることが出来るので、カスタムクラスインスタンスを渡す場合はScriptableObjectをAnimationClipに保持させておくことが出来ます。

以前からAnimationEventでカスタムクラスを渡したかったので、実装可能だということが分かり非常に嬉しいのですが、なんとも悔しいリファレンスの見落としです;;

オススメ記事
検証環境