今日はC#のeventの使い方を勉強しました。
delegateと何が違うのかというと、eventは定義したクラスでしか実行できないようです。
カプセル化の観点から今後はeventを使った方が良さそうですね。
Unityでeventを使用する
Unityでeventを作成する方法は下記の通りです。
ほとんどdelegateの実装と変わらないです。
using UnityEngine;
public class EventSample : MonoBehaviour
{
public delegate void ButtonClick();
public event ButtonClick buttonClick;
public void Click()
{
if (buttonClick != null)
{
buttonClick();
}
}
}
eventの使用方法は下記の通りです。
こちらもほとんどdelegateの使用方法と変わらないですね。
using UnityEngine;
public class Sample : MonoBehaviour
{
[SerializeField] private EventSample eventSample;
private void Start()
{
eventSample.buttonClick += DoTask;
}
private void DoTask()
{
Debug.Log("Button Click!");
}
}
今までdelegateで記述していた部分は、今度からeventで実装してみようと思います。
環境
Windows 10 Pro
Unity 2019.4

コメント
コメントを投稿