2025-03-25 13:23:47 +08:00

65 lines
1.4 KiB
C#

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<bool> OnValueChanged = new UnityEvent<bool>();
private float mouseDownTime;
private bool isMouseDown;
bool isLock = false;
private void Awake()
{
TypeEventSystem.Global.Register<OnLock>(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);
}
}