unity3d - 移动鼠标时长按按钮问题
问题描述
我在 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
解决方案
使用 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
{
:
:
}
:
:
}
推荐阅读
- c# - Adding AWS Cognito to IdentityServer4 as an OIDC Provider
- firebase - Firebase 函数 pubsub 触发器:订阅多个事件?
- docker - Restart containers within ECS when a certain container is deployed
- python - 从 Modelica 模型中提取具有 start 属性的变量列表
- python - Plotly Dash: Show variable value in output
- winforms - 创建 CLR 用户控件
- database - 是否可以像数据库一样使用 Spark?
- java - 你能告诉我为什么运行时没有输出吗
- liquibase - 在 spring 应用程序中从 liquibase 执行程序收到错误消息:liquibase 包含的文件 **** 不是可识别的文件类型
- node.js - 如何使用 aws amplify searchable 搜索模型的多个键?