using QFramework; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public class ObjectToggle : MonoBehaviour { public bool isOn = false; //EventHandler OnValueChanged public UnityEvent OnValueChanged = new UnityEvent(); private float mouseDownTime; private bool isMouseDown; bool isLock = false; private void Awake() { TypeEventSystem.Global.Register(OnLockEvent).UnRegisterWhenDisabled(this); } private void OnLockEvent(OnLock islock) { this.isLock = islock.isLock; } private void OnMouseDown() { if (isLock == true) { return; } // 记录鼠标按下的时间 mouseDownTime = Time.time; isMouseDown = true; } private void OnMouseUp() { if (isMouseDown) { // 计算鼠标按下和抬起的时间间隔 float clickDuration = Time.time - mouseDownTime; // 检查时间间隔是否大于 0.2 秒 if (clickDuration < 0.2f) { if (isOn == false) { isOn = !isOn; OnValueChanged?.Invoke(isOn); } } isMouseDown = false; } } public void Set(bool isOn) { this.isOn = isOn; OnValueChanged?.Invoke(isOn); } }