今天做项目时,需要做单击和双击事件的检测。
找到了一个解决方案:https://blog.csdn.net/zhangbp/article/details/50845020
但是它是检测鼠标双击事件的,我们需要进行键盘上的单击和双击。所以在他的基础上进行进一步修改:
private bool keyDownStatus;
private int keyDownCount;
private float lastTime;
private float currentTime;
//key -> 要监听的按键, timeElapse -> 双击之间最大时间间隔
bool DoubleClick(KeyCode key, float timeElapse) {
//down --> mouseDownStatus = true; //up --> mouseDownStatus = false
if (Input.GetKeyDown(key)) {
if (!keyDownStatus) {
keyDownStatus = true;
//Debug.Log("clicked");
if (keyDownCount == 0) {// 如果按住数量为 0
lastTime = Time.realtimeSinceStartup;// 记录最后时间
}
keyDownCount++;
}
}
if (Input.GetKeyUp(key)) {
keyDownStatus = false;
}
if (keyDownStatus) {
if (keyDownCount >= 2) {
currentTime = Time.realtimeSinceStartup;
if (currentTime - lastTime < timeElapse) {
lastTime = currentTime;
keyDownCount = 0;
//Debug.Log("Double clicked");
return true;//返回结果,确认双击
}
else {
lastTime = Time.realtimeSinceStartup; // 记录最后时间
keyDownCount = 1;
}
}
}
return false;
}