Q:

Взаимодействие 'Raycast' с 'UI' компонентами по 'Tag'

Каким образом реализовать взаимодействие курсора с 'UI' компонентами выборка которых происходит по их 'Tag'?
Пытался реализовать это так:
    Ray _ray = MyCamera.ScreenPointToRay(Input.mousePosition);

    if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
        Debug.Log("Complete!");

Результат: Курсор реагирует на все UI компоненты булев 'Raycast Target' которого является положительным.

A:

В чем смысл луча в данном коде?
Если в том, чтобы с его помощью определять, с каким объектом происходит взаимодействие, то:
Ray _ray = MyCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(_ray, out hit)) {
    if (hit.gameObject.tag == "something") {
        if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
            Debug.Log("Complete!");
    }
}

Не очень круто, но в этом был смысл луча?
UPD:
Тогда можно оставить так через луч:
Ray _ray = MyCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(_ray, out hit) && hit.gameObject.tag == "something") {
    //if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()) более не требуется.
    Debug.Log("Complete!");
}

Но на мой взгляд лучше избежать использования луча даже простыми event, либо EventTrigger, как предложили в комментариях, либо еще как-то.

