【Unity】コードでイベントを書く方法
1. イベントの定義
イベントを定義するには、UnityEvent
クラスを使用します。まず、以下のように、イベントを定義します。
using UnityEngine.Events;
public class MyEvent : UnityEvent<int>
{
}
この場合、MyEvent
というクラスが定義されており、UnityEvent
クラスを継承しています。また、ジェネリック型の引数としてint
を指定しています。これは、このイベントがint
型の引数を持つことを示しています。
2. イベントを発行する
イベントを発行するには、以下のようにします。
public class MyClass : MonoBehaviour
{
public MyEvent myEvent;
private void Start()
{
myEvent.Invoke(10);
}
}
このように、MyClass
というクラスを定義し、MyEvent
型のmyEvent
というフィールドを定義します。そして、Start()
メソッド内で、myEvent.Invoke(10)
という形式で、イベントを発行します。
3. イベントを受信する
イベントを受信するには、以下のようにします。
public class MyReceiver : MonoBehaviour
{
private void OnEnable()
{
GetComponent<MyClass>().myEvent.AddListener(MyEventHandler);
}
private void OnDisable()
{
GetComponent<MyClass>().myEvent.RemoveListener(MyEventHandler);
}
private void MyEventHandler(int arg)
{
Debug.Log("MyEventHandler called with arg=" + arg);
}
}
このように、MyReceiver
というクラスを定義し、OnEnable()
メソッド内で、MyClass
型のコンポーネントからmyEvent
を取得し、AddListener()
メソッドを使用して、MyEventHandler
メソッドを登録します。また、OnDisable()
メソッド内で、RemoveListener()
メソッドを使用して、登録したMyEventHandler
メソッドを削除します。MyEventHandler
メソッドは、int
型の引数を受け取り、デバッグログに引数の値を出力するだけの簡単なものです。
以上が、Unityでコードでイベントを書く方法の手順です。イベントを使用することで、オブジェクト間の通信を容易に行うことができます。
ディスカッション
コメント一覧
まだ、コメントがありません