【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でコードでイベントを書く方法の手順です。イベントを使用することで、オブジェクト間の通信を容易に行うことができます。






ディスカッション
コメント一覧
まだ、コメントがありません