移动鼠标时长按按钮问题

问题描述 投票:0回答:1

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

这是我的代码:

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
unity3d user-interface button
1个回答
0
投票

使用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
    {
       :
       :
    }
    :
    :
}
© www.soinside.com 2019 - 2024. All rights reserved.