首页 > 解决方案 > 移动鼠标时长按按钮问题

问题描述

我在 MouseDown 上使用了一个效果很好的长按按钮,如果我不移动鼠标,在我的延迟结束时,我有我的行动。如果我移动鼠标(仍然按下并仍然在按钮上)它会重置按钮的延迟,我不明白为什么。如果有人有想法,那将对我有很大帮助。谢谢

这是我的代码:

private bool _PointerDown;
public float DelaiReponse;
private float _PointerDownTimer;
private bool _IsValidate = false;
private float _Delai;

public void OnPointerDown(PointerEventData eventData)
{
    _PointerDown = true;
}

public void OnPointerUp(PointerEventData eventData)
{
    _PointerDown = false;
    _PointerDownTimer = 0;
}

void Start()
{
   _Delai = DelaiReponse;
}

private void Update()
{
    if (_PointerDown) // Timer Button Validation Hold
    {
        _PointerDownTimer += Time.deltaTime;
        if (_PointerDownTimer >= _Delai)
        {
            _IsValidate = true;
        }
    }
}enter code here

标签: unity3duser-interfacebutton

解决方案


使用 Input.GetMouseDown(0) 和 Input.GetMouseButtonUp(0) 可以解决问题:

private void Update()
{
    if (Input.GetMouseDown(0))
    {
        _PointerDown = true;
    }
    if (Input.GetMouseUp(0))
    {
        _PointerDown = false;
        _PointerDownTimer = 0;
    }

    if (_PointerDown) // Timer Button Validation Hold
    {
       :
       :
    }
    :
    :
}

推荐阅读