Unity. Работа с UI button

Через что можно реализовать отслеживание зажатия Button?
Есть UI кнопка и, пока игрок ее держит, происходят действия. Как отпустил — действие прекратилось.
Пробовал через IPointer интерфейсы, но там нет отслеживания зажатия мышки (или — на мобилках — зажатия экрана)


Ответы (2 шт):

Автор решения: r1kki

Еще вы можете попробовать добавить компонент EventTrigger к вашей кнопке.

→ Ссылка
Автор решения: Sergey Skvortsov

Например, вы можете реализовать наследника Button, который даст во вне доступ к нужном методу.

using UnityEngine.UI;

public class CustomButton : Button
{
    public new bool IsPressed()
    {
        return base.IsPressed();
    }

}

Теперь просто замените компонент Button на CustomButton везде где нужно.

PS: на самом деле можно реализовать и на IPointer интерфейсах:

using UnityEngine.EventSystems;
using UnityEngine.UI;

public class CustomButton : Button //, IPointerDownHandler, IPointerUpHandler
{
    public bool IsButtonPressed { get; private set; }

    public override void OnPointerDown(PointerEventData eventData){
        base.OnPointerDown(eventData);
        IsButtonPressed = true;
    }

    public override void OnPointerUp(PointerEventData eventData){
        base.OnPointerUp(eventData);
        IsButtonPressed = false;
    }
}

НО код в первом примере выглядит красивее и обрабатывает чуть больше возможных ситуаций

→ Ссылка