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;
}
}
НО код в первом примере выглядит красивее и обрабатывает чуть больше возможных ситуаций