コールバック関数の実装について
コールバック関数とは?
コールバック関数とは、あるイベントが発生した時に付随して呼ばれる関数のことです。 unityではUnity Eventが代表的なもので、UIシステムのボタンに実装されているOnClick関数もイベント関数=コールバック関数の一種です。
コールバック関数の記述方法
ここではUnity Eventを例に説明します。
UnityEvent event;
void Start()
{
event.AddListener(Method);
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Return))
event.Invoke(); //実行
}
void Method(){}
ただし、引数を指定したい場合はクラスを用意しなければなりません。
参考:https://docs.unity3d.com/ja/current/ScriptReference/Events.UnityEvent_1.html
お気に入りの使い方
ここで筆者が気に入っている使い方を紹介します。 以下のように、インスペクタに表示することで簡単に別クラスで実装した関数を実行できます。
[SerializeField] private UnityEvent event;
ユースケース
入力イベントをまとめるクラスを作成したり、ダメージを受けた時に自動でエフェクトを発生させたりできます。
忘れがちなTIPS
多くの場合は自作関数をコールバックに設定するため忘れがちですが、 Unityの標準クラスもイベント関数として登録できます。 GameObject.Destroy()等も登録出来ることを覚えておくと細かな記述が省略できます。
終わりに
コールバック関数を使うことでプログラムの仕方の幅が広がることがわかるように記事を書きました。 プログラムの手法はプロジェクト毎に異なるため必ずしも使えるわけではありません。 しかし、今回紹介した手法は素早く機能を実装することに向いています。ぜひご活用ください。