Unity UI Toolkit 이벤트 시스템 안내서

개요

Unity의 UI Toolkit 이벤트 시스템은 운영체제 또는 스크립트에서 오는 이벤트를 수신하고, EventDispatcher를 통해 이 이벤트를 시각적 요소로 디스패치합니다. 이벤트 디스패처는 각 이벤트에 대한 적절한 디스패치 전략을 결정하고 실행합니다.

이벤트 동작

시각적 요소는 여러 이벤트에 대한 기본 동작을 구현할 수 있습니다. 예를 들어, MouseMoveEvent는 추가로 MouseEnterEventMouseLeaveEvent를 생성할 수 있습니다. 이러한 이벤트는 대기열에 들어가고, 현재 이벤트가 완료된 후에 처리됩니다.

디스패치 단계

각 이벤트 타입은 고유한 디스패치 동작을 가집니다. 이 동작은 다음 세 단계로 나뉩니다:

  1. 트리클다운 (Trickle Down): 요소로 전송되는 이벤트입니다.
  2. 버블업 (Bubble Up): 요소가 이벤트를 수신한 후 루트를 향해 올라가는 단계입니다.
  3. 취소 가능 (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의 이벤트 시스템을 이해하는 데 도움이 되길 바랍니다.