===========================================================
using System;
public class BaseEvent<T> where T: BaseEvent<T>
{
private static Action mOnEvent;
public static void AddListener( Action listener)
{
mOnEvent += listener;
}
public static void RemoveListener( Action listener)
{
mOnEvent -= listener;
}
public static void SendEvent()
{
mOnEvent?.Invoke();
}
void Destroy()
{
mOnEvent = null;
}
}
===========================================================
public class GamePassEvent : BaseEvent<GamePassEvent>
{
}
public class GameStartEvent : BaseEvent<GamePassEvent>
{
}
===========================================================
using System;
using UnityEngine;
using UnityEngine.UI;
public class Game : MonoBehaviour
{
private void Start()
{
GamePassEvent.AddListener(OnGamePass);
GameStartEvent.AddListener(OnGameStart);
GameObject.Find("GamePass").GetComponent<Button>().onClick.AddListener(() =>
{
GamePassEvent.SendEvent();
});
GameObject.Find("GameStart").GetComponent<Button>().onClick.AddListener(() =>
{
GameStartEvent.SendEvent();
});
}
private void OnGameStart()
{
Debug.Log("Game Start!");
}
private void OnGamePass()
{
Debug.Log("Game Pass!");
}
}
===========================================================