我在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
使用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
{
:
:
}
:
:
}