IPointerEvent.clickCount
Declaration
public int clickCount;Описание
Получает число последовательных последовательностей вниз-вверх, выполненных за короткое время с одним и тем же указателем ID и кнопкой.
Существуют две различные формулы, используемые для определения значения для clickCount.
Если событие является ClickEvent, специальная структура данных отслеживает количество кликов для каждого указателя ID, и будет использовать это количество кликов при инициализации следующего события клика:
- clickCount увеличивается на PointerDownEvent. — Время измеряется между последовательными PointerDownEvents. — Срок истекает 0.5 секунд по умолчанию, но может варьироваться на некоторых платформах. — clickCount сбрасывается, когда событие с другим указателем ID или кнопка, чем предыдущий отправляется. — clickCount сбрасывается на PointerDownEvent если его цель не та же, что и у предыдущего PointerDownEvent.
Если событие не является ClickEvent, значение для clickCount Время, которое может быть использовано для изучения данных, не следует строгой формуле, а определяется фреймворками активных вводимых данных и соглашениями платформы. PointerDownEventс или между а PointerUpEvent и следующий PointerDownEvent различается.
Чтобы сохранить последовательность в вашем коде, не полагайтесь на clickCount для других мероприятий, ClickEvent по возможности. Мы рекомендуем отслеживать количество кликов вручную, регистрируя обратные вызов PointerDownEvent и PointerUpEvent по вопросу IPanel.visualTree с использованием TrickleDown.TrickleDown Эта фаза позволяет отслеживать все входящие события Panel. Ниже приведен пример реализации.
using UnityEngine; using UnityEngine.UIElements;
public class ClickCountMonitor { public int ClickCount { get; private set; }
private float doubleClickTime; private int lastPointerId = -1; private int lastButton; private IEventHandler lastTarget; private float lastTime; public ClickCountMonitor(IPanel panel, float doubleClickTime = 0.5f) { this.doubleClickTime = doubleClickTime; panel.visualTree.RegisterCallback<PointerDownEvent>(e => { CheckResetConditions(e); ClickCount++; }, TrickleDown.TrickleDown); panel.visualTree.RegisterCallback<PointerUpEvent>(e => { CheckResetConditions(e); }, TrickleDown.TrickleDown); } private void CheckResetConditions(IPointerEvent e) { if (e.pointerId != lastPointerId || e.button != lastButton || ((EventBase)e).target != lastTarget || Time.time >= lastTime + doubleClickTime) ClickCount = 0; lastPointerId = e.pointerId; lastButton = e.button; lastTarget = ((EventBase)e).target; lastTime = Time.time; } }