UnityEvent は実行時に追加のプログラミングやスクリプト設定を必要とせずに,編集時から保持される駆動コールバックをユーザーが使用できるようにする方法です。
UnityEvent は以下のようないくつかの場合に便利です
コンテンツ駆動コールバック
分離システム
永続コールバック
事前設定コールイベント
UnityEvent はどの MonoBehaviour にも加えることができ,標準の .NET デリゲートのようにコードから実行することができます。 UnityEvent が MonoBehaviour に加えられる時,インスペクターに表示され,永続コールバックも加えることができます。
UnityEvent を使用する
エディタからコールバックを設定するために,いくつかの必要なステップがあります:
コールバックのスロットを加えるために + アイコンを選択します。
コールバックを受け取りたい UnityEngine.Object を選択します(これにはオブジェクトセレクターを使用することができます。)
呼び出したい関数を選択する
イベントのために,一つ以上のコールバックを加えることができます
インスペクターから UnityEvent を設定する場合,2つのサポートされている関数コールがあります:
Static(静的)
Dynamic(動的)
静的コールは,UI から設定された事前設定の値を伴う,事前設定されたコールです。これは,コールバックが実行された時,対象の関数は UI に入力されている引数を伴って実行されるという意味です。
動的コールはコードから送信された引数を使用して実行されます。この引数は実行されている UnityEvent のタイプと結びついています。UI はコールバックにフィルターをかけ, UnityEvent で有効な動的コールのみを表示します。
Generic UnityEvent
デフォルトで MonoBehaviour の UnityEvent は動的に void 関数をバインドします。UnityEvent は4つまで引数を伴う関数バインドをサポートしていますので,これは動的実行のケースである必要はありません。これを実行するために,複数の引数をサポートするカスタム UnityEvent クラスを定義する必要があります。これは以下のように,本当に簡単にできます:
[Serializable]
public class StringEvent : UnityEvent < string > {}
このインスタンスを base UnityEvent の代わりにあなたのクラスに加えることで,コールバックを動的に文字列関数と結びつけることを可能にします。
これは,この後 ‘string’ を引数として関数実行をコールすることで実行することができます。
UnityEvent はジェネリック定義で最大4つの引数を定義することができます。