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; private void OnMouseDown() { // 记录鼠标按下的时间 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); } }