Unity UI Toolkit 이벤트 시스템 안내서
개요
Unity의 UI Toolkit 이벤트 시스템은 운영체제 또는 스크립트에서 오는 이벤트를 수신하고, EventDispatcher를 통해 이 이벤트를 시각적 요소로 디스패치합니다. 이벤트 디스패처는 각 이벤트에 대한 적절한 디스패치 전략을 결정하고 실행합니다.
이벤트 동작
시각적 요소는 여러 이벤트에 대한 기본 동작을 구현할 수 있습니다. 예를 들어, MouseMoveEvent
는 추가로 MouseEnterEvent
와 MouseLeaveEvent
를 생성할 수 있습니다. 이러한 이벤트는 대기열에 들어가고, 현재 이벤트가 완료된 후에 처리됩니다.
디스패치 단계
각 이벤트 타입은 고유한 디스패치 동작을 가집니다. 이 동작은 다음 세 단계로 나뉩니다:
- 트리클다운 (Trickle Down): 요소로 전송되는 이벤트입니다.
- 버블업 (Bubble Up): 요소가 이벤트를 수신한 후 루트를 향해 올라가는 단계입니다.
- 취소 가능 (Cancelable): 이벤트는 기본 액션의 실행을 취소, 중단 또는 방지할 수 있습니다.
자세한 이벤트 타입의 디스패치 동작 리스트는 이벤트 레퍼런스 페이지를 참조하세요.
이벤트 전파
이벤트 디스패처는 이벤트의 타겟을 선택한 후 전파 경로를 계산합니다. 전파 경로는 시각적 요소의 순서 리스트로, 루트에서 시작해 타겟으로 내려갑니다.
이벤트가 전파되는 과정은 다음과 같습니다:
단계 | 설명 |
---|---|
트리클다운 | 시각적 요소 트리의 루트에서 타겟으로 내려가는 단계 |
이벤트 수신 | 이벤트 타겟이 이벤트를 수신 |
버블업 | 이벤트가 루트를 향해 상승하는 단계 |
이벤트 속성
이벤트는 다음과 같은 주요 속성을 가집니다:
Event.currentTarget
: 현재 이벤트를 처리하는 요소.Event.target
: 이벤트가 발생한 요소.
이벤트의 타겟은 해당 이벤트 타입에 따라 결정됩니다. 예를 들어, 마우스 이벤트의 경우 일반적으로 마우스 아래에 있는 최상위 요소입니다.
선택 모드 및 커스텀 모양
대부분의 마우스 이벤트는 선택 모드를 통해 타겟을 결정합니다. VisualElement
클래스의 pickingMode
프로퍼티는 다음 값을 지원합니다:
프로퍼티 값 | 설명 |
---|---|
PickingMode.Position |
포지션 직사각형을 기반으로 선택을 수행 |
PickingMode.Ignore |
선택을 방지 |
마우스 캡처
MouseDownEvent
발생 후, 이후 발생하는 모든 마우스 이벤트는 요소가 마우스 포인터를 캡처해야 수신할 수 있습니다.
마우스를 캡처하기 위해서는 element.CaptureMouse()
또는 MouseCaptureController.CaptureMouse()
를 호출하세요. 마우스를 해제하려면 MouseCaptureController.ReleaseMouse()
를 호출합니다.
포커스 링과 탭 순서
각 UI 툴킷 패널에는 요소의 포커스 순서를 정의하는 포커스 링이 있습니다. 기본적으로 포커스 순서는 DFS (Depth-First Search)를 사용하여 결정됩니다.
탭 순서 | 설명 |
---|---|
음수 | 요소에서 탭을 사용할 수 없음 |
0 | 기본 탭 순서 유지 |
양수 | 다른 요소보다 앞서 배치됨 |
추가 리소스
이 가이드가 Unity UI Toolkit의 이벤트 시스템을 이해하는 데 도움이 되길 바랍니다.