【Unity】イベントのサンプル
Unityでは、イベントを使用して、オブジェクトやコンポーネント間で通信を行うことができます。
サンプル
以下は、C#言語を使用してUnityのイベントを使用する簡単な例です。
まず、イベントを送信するクラスを作成します。
using UnityEngine;
using UnityEngine.Events;
public class MyEventSender : MonoBehaviour
{
public UnityEvent myEvent;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// イベントを発生させる
myEvent.Invoke();
}
}
}
上記のコードでは、MyEventSender
クラスを作成し、UnityEvent
を使用してmyEvent
というイベントを定義しています。Update
メソッドで、スペースキーが押されたときにmyEvent
を発生させます。
次に、イベントを受信するクラスを作成します。
using UnityEngine;
public class MyEventListener1 : MonoBehaviour
{
private void Start()
{
// イベントを受信するために、MyEventSenderオブジェクトのmyEventにイベントリスナーを登録する
// 旧: FindObjectOfType<MyEventSender>().myEvent.AddListener(OnMyEvent);
FindAnyObjectByType<MyEventSender>().myEvent.AddListener(OnMyEvent);
}
private void OnMyEvent()
{
Debug.Log("イベントを受信しました!");
}
}
上記のコードでは、MyEventListener
クラスを作成し、Start
メソッドでMyEventSender
オブジェクトのmyEvent
にOnMyEvent
メソッドを登録しています。OnMyEvent
メソッドは、myEvent
が発生したときに呼び出され、ログを出力します。
これで、MyEventSender
オブジェクトがスペースキーを押すと、MyEventListener
オブジェクトがmyEvent
を受信し、ログを出力するようになります。
その他のイベント登録方法
GameObject.FindとGatComponentメソッドで取得後、登録
using UnityEngine;
public class MyEventListener2 : MonoBehaviour
{
private void Start()
{
// イベントを受信するために、MyEventSenderオブジェクトのmyEventにイベントリスナーを登録する
GameObject.Find("EventSender").GetComponent<MyEventSender>().myEvent.AddListener(OnMyEvent);
}
private void OnMyEvent()
{
Debug.Log("2: イベントを受信しました!");
}
}
アウトレット接続で取得後、登録
MyEventSenderスクリプトの次のフィールドにAddListenerメソッドで登録します
具体的な方法としては、MyEventSenderスクリプトを取得後に代入します
public UnityEvent myEvent;
using UnityEngine;
public class MyEventListener3 : MonoBehaviour
{
public MyEventSender myEventSender;
private void Start()
{
// イベントを受信するために、MyEventSenderオブジェクトのmyEventにイベントリスナーを登録する
myEventSender.myEvent.AddListener(OnMyEvent);
}
private void OnMyEvent()
{
Debug.Log("3: イベントを受信しました!");
}
}
MyEventSenderのインスペクターで登録
コードでの登録ではなく、Unityの仕様としてインスペクターにListenerをアタッチする方法もあります
using UnityEngine;
public class MyEventListener4 : MonoBehaviour
{
public void OnMyEvent()
{
Debug.Log("4: イベントを受信しました!");
}
}
実行結果
最初のサンプルは、スクリプト名をMyEventListener1としています
4: イベントを受信しました!
3: イベントを受信しました!
2: イベントを受信しました!
1: イベントを受信しました!
ディスカッション
コメント一覧
まだ、コメントがありません