Отлавливание левой и правой кнопки мыши в Unity при нажатии на Button. C#
Как можно отлавливать кнопки мыши, при нажатии на button - UI элемент? Мне нужно запускать скрипт через Event Trigger при нажатии и отжатии левой кнопки мыши, а правую игнорировать.
Ответы (2 шт):
Вообще реакция на правую кнопку мыши отключается в Edit > Project Settings > Input
(найдено по запросу в гугле "unity button ignore right click" по первой ссылке)
Но можно и просто написать свою реализацию кнопки которая это будет делать. Это так же просто в реализации.
Для того, чтобы отлавливать нажатие по Button в Unity тебе нужно создать специальный класс, который будет наследовать интерфейс IPointerClickHandler.
Этот класс должен быть добавлен компонентом к объекту, на котором у тебя висит Button. Чтобы этот интерфейс появился в IntelliSense не забудь добавить using UnityEngine.EventSystems;
Далее, в методе OnPointerClick ты сможешь перехватить нажатие. Не важно, как именно добавлено событие к твоей Button, через скрипт или через inspector.
Теперь ты можешь отследить, какая именно кнопка мыши была нажата и если это не левая кнопка мыши-тогда ты просто сбрасываешь вызов через eventData.Reset();
Привожу небольшой пример кода ниже.
public class TESTTEST : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
if (eventData.button == PointerEventData.InputButton.Left)
{
Debug.Log("Left click");
}
else if (eventData.button == PointerEventData.InputButton.Middle)
{
Debug.Log("Middle click");
eventData.Reset();
}
else if (eventData.button == PointerEventData.InputButton.Right)
{
Debug.Log("Right click");
eventData.Reset();
}
}
public void ActiveOnLeft()
{
Debug.Log("ActiveOnLeft");
}
}