public class _5_1ValueChangeEvent<T>
{
//利用事件监听某一值的变化
public delegate void Handler(T newValue);
public Handler handler;
public void setValue(Handler handler,T value)
{
if (defultValue.Equals(value)) return;
handler?.Invoke(value);
defultValue = value;
}
public event Handler eventHandler;
private T defultValue;
//public T Value
//{
// get { return defultValue; }
// set
// {
// //如果默认值与外部监听的值 相等 则跳过
// if (defultValue.Equals(value)) return;
// //不等 则Invoke执行该事件的委托(OnVariableChange)的所有方法 此处value为委托的参数
// //?为一个C#的简化操作,存在,则直接调用委托
// eventHandler?.Invoke(value);
// defultValue = value;
// }
//}
}
public class _5_2ValueCh : MonoBehaviour
{
_5_1ValueChangeEvent<bool> value = new _5_1ValueChangeEvent<bool>();
void Start()
{
//value.eventHandler += valueChange;
}
void Update()
{
value.setValue(valueChange, Input.GetMouseButton(0));
// value.Value = Input.GetMouseButton(0);
}
void valueChange(bool value)
{
if (value == true) Debug.Log("5-2-------ValueChanged");
if (value == false) Debug.Log("5-2-------false");
}
}