Отлавливание левой и правой кнопки мыши в Unity при нажатии на Button. C#

Как можно отлавливать кнопки мыши, при нажатии на button - UI элемент? Мне нужно запускать скрипт через Event Trigger при нажатии и отжатии левой кнопки мыши, а правую игнорировать.


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

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

Вообще реакция на правую кнопку мыши отключается в Edit > Project Settings > Input

(найдено по запросу в гугле "unity button ignore right click" по первой ссылке)

Но можно и просто написать свою реализацию кнопки которая это будет делать. Это так же просто в реализации.

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

Для того, чтобы отлавливать нажатие по 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");
    }

}
→ Ссылка