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