using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
///
///
///
public class TEST : MonoBehaviour
{
private EventListener listenerTest;
private void Start()
{
listenerTest = new EventListener();
listenerTest.OnVariableChange += Test; // 发报纸给Test
}
private void OnDestroy()
{
listenerTest.OnVariableChange -= Test; // 取消订阅
}
private void Update()
{
listenerTest.Value = Input.GetKey(KeyCode.W);
}
private void Test(bool value)
{
Debug.Log(value);
}
}
public class EventListener
{
public delegate void OnValueChangeDelegate(T newVal);
public event OnValueChangeDelegate OnVariableChange;
private T m_value;
public T Value
{
get
{
return m_value;
}
set
{
if (m_value.Equals(value))
{
return;
}
OnVariableChange?.Invoke(value);
m_value = value;
}
}
}