デリゲートは、イベントのハンドラとしても使用されます。
例えば、ボタンクリックイベントにデリゲートを使用して、クリックされたときに特定のメソッドを呼び出すことができます。
最初に
イベントハンドラと
イベントリスナについて簡単に説明します。
イベントハンドラとは、
特定のイベントが発生したときに実行されるメソッドのことを指します。
例えば、ボタンがクリックされたときに実行する処理を書いたメソッドは、ボタンのクリックイベントのハンドラとなります。
イベントが発生したときに、それに対応するメソッド(イベントハンドラ)を実行するためには、
そのメソッドへの参照が必要です。
デリゲートはまさにそのためのもので、
メソッドへの参照を保持し、必要なときにそのメソッドを呼び出します。
したがって、デリゲートはイベント駆動型プログラミングにおいて非常に重要な役割を果たします。
これにより、イベントが発生したときに特定のアクションを動的に割り当てたり、変更したりすることが可能となります。
イベントリスナとは、
特定のイベントを監視して、その
イベントが発生したときにイベントハンドラを呼び出す仕組みのことを指します。
リスナは「リスニング」つまり「聞き耳を立てている」ことから名付けられています。
リスナはイベントを「聞いて」、そのイベントが発生したときに適切なハンドラを呼び出します。
例えばボタンのイベントであれば、
「ボタンを押す」という処理を特定のイベントとみなし、それを監視する役目がイベントリスナです。
ボタンの場合には、AddListener メソッドが用意されており、この引数にはデリゲートとしてメソッドが登録できるようになっています。
これがイベントリスナとして機能します。
それでは、ボタンを使ったイベントの簡単な実装例と挙動を確認するサンプルコードを提示します。
using UnityEngine;
using UnityEngine.UI;
public class ButtonExample : MonoBehaviour
{
public Button button;
private void Start()
{
button.onClick.AddListener(OnButtonClick); // イベントリスナにあたる、「ボタンを押したら」という特定のイベントを監視する処理
}
private void OnButtonClick() // ← ボタンのイベントのイベントハンドラにあたる、デリゲートして利用するメソッド
{
Debug.Log("ボタンがクリックされました。");
}
}
このスクリプトでは、ButtonクラスのonClickイベントにOnButtonClickメソッドを AddListener メソッドを使って、イベントリスナとして追加しています。
これはデリゲートの処理になっており、AddListener メソッドは、OnButtonClickメソッドへの参照を保持しています。
そして「ボタンがクリックされたとき」のイベントをリスナが監視しています。
ボタンがクリックされると、イベントハンドラである、AddListener メソッドのデリゲートが参照している OnButtonClickメソッドが呼び出され、
Debug.Log メソッドが実行されてメッセージが表示されます。
このように、デリゲートとイベントを使用して、ボタンのクリックイベントに対して処理を実行しています。
イベントリスナとイベントハンドラは一緒に動作して、特定のイベントが発生したときに特定のコードが実行されるようにします。
これはプログラムのフローを管理し、特定のイベントに対して柔軟に対応するための重要な仕組みです。