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

Unity,イベント,学習

Posted by hidepon