45 lines
1018 B
C#
45 lines
1018 B
C#
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;
|
|
private void OnMouseDown()
|
|
{
|
|
// 记录鼠标按下的时间
|
|
mouseDownTime = Time.time;
|
|
isMouseDown = true;
|
|
}
|
|
|
|
private void OnMouseUp()
|
|
{
|
|
if (isMouseDown)
|
|
{
|
|
// 计算鼠标按下和抬起的时间间隔
|
|
float clickDuration = Time.time - mouseDownTime;
|
|
|
|
// 检查时间间隔是否大于 0.2 秒
|
|
if (clickDuration < 0.2f)
|
|
{
|
|
isOn = !isOn;
|
|
OnValueChanged?.Invoke(isOn);
|
|
}
|
|
|
|
isMouseDown = false;
|
|
}
|
|
}
|
|
|
|
public void Set(bool isOn)
|
|
{
|
|
this.isOn = isOn;
|
|
OnValueChanged?.Invoke(isOn);
|
|
}
|
|
}
|