[Unity] Event Trigger Component

muchan
muchan
∙∙조회 8
[Unity] Event Trigger Component

Event Trigger란?

Unity UI 컴포넌트로 마우스 이벤트(들어옴, 나감, 클릭, 드래그 등)를 인스펙터에서 함수에 연결해주는 부품이다

쓰는 이유

유니티 버튼을 하나 만들면 기본적으로 Button 컴포넌트가 붙고 OnClick이라는 버튼을 눌렀을 때 호출할 이벤트 필드가 자동으로 생성된다.

하지만 버튼은 마우스 커서가 올라갈 때, 커서가 벗어날 때, 누르고 있을 때 등 다양한 상황이 있고 그 상황에 이벤트를 호출하고 싶을 때 Event Trigger를 사용한다. 버튼 뿐만 아니라 이미지나 슬라이더 등 Unity에서 지원하는 UI 오브젝트들 모두 적용할 수 있다.

적용하기

현재 진행중인 프로젝트에서 경영 공간에 건물들이 있는데 버튼을 누르면 해당 건물로 이동하는 기능을 추가했다. 원래는 아이콘만 넣으려고 했는데, 아이콘만 보기엔 뭐가 무슨 건물인지 잘 안보여서 버튼에 마우스를 올렸을 때 건물 이름만 보이게 작업했다.

코드

csharp
public class BuildingShortcutBar : MonoBehaviour
{
    [SerializeField] private Entry[] _entries;     // 건물 6개
    [SerializeField] private GameObject _tooltipPanel;
    [SerializeField] private TextMeshProUGUI _tooltipText;

    // EventTrigger의 PointerEnter가 버튼 순번으로 호출한다.
    public void ShowTooltip(int index)
    {
        if (_tooltipPanel == null || index < 0 || index >= _entries.Length) return;

        _tooltipText.text = ResolveName(_entries[index].focus);
        _tooltipPanel.SetActive(true);
        FollowCursor(); // 첫 프레임부터 커서에 붙어 나오도록
    }

    // EventTrigger의 PointerExit가 호출한다.
    public void HideTooltip()
    {
        if (_tooltipPanel != null) _tooltipPanel.SetActive(false);
    }
}

마우스가 버튼에 올라갈 때, 마우스가 버튼에서 나갈 때 적용할 함수를 적어준다. 라벨 띄우고 사라지게 하는 코드다

EventTrigger 컴포넌트 추가

버튼에 Event Trigger 컴포넌트를 추가하고 Add New Event Type으로 Pointer Enter와 Pointer Exit을 추가한다

6개 모두 잘 나오는것을 확인할 수 있다. (마우스 올리면 나오고 빠지면 안보입니다)

Event Trigger Type

Add New Type을 하면 해당 항목들이 나오는데 각각 역할은 아래 표와 같다

포인터

이벤트언제
PointerEnter커서가 올라옴 — 툴팁·하이라이트
PointerExit커서가 벗어남
PointerDown버튼을 누른 순간
PointerUp뗀 순간 (밖에서 떼도 발생)
PointerClick같은 오브젝트에서 누르고 뗌 = 진짜 클릭

드래그

이벤트언제
InitializePotentialDrag드래그 후보가 됨 (누른 직후, 아직 안 움직임)
BeginDrag임계 거리를 넘어 드래그 시작
Drag드래그 중 매 프레임
EndDrag드래그 끝
Drop받는 쪽에서 발생 — 드래그된 게 내 위에 놓임
Scroll휠 굴림

선택 (EventSystem의 "현재 선택된 UI")

이벤트언제
Select선택됨 (탭·클릭·코드)
Deselect선택 해제됨
UpdateSelected선택된 동안 매 프레임
Move방향키·스틱 입력 — 게임패드 UI 이동
Submit확인 키 (기본 Enter/스페이스, 게임패드 A)
Cancel취소 키 (기본 Esc, 게임패드 B)