Unity UI 내비게이션 이벤트 가이드
Unity의 UI 툴킷은 다양한 이벤트를 사용하여 사용자 인터페이스(UI)를 효과적으로 구성하고 관리할 수 있도록 도와줍니다. 이 문서에서는 내비게이션 이벤트와 그 사용법에 대해 알아보겠습니다.
내비게이션 이벤트란?
내비게이션 이벤트는 사용자가 D패드나 조이스틱을 조작하거나 Escape, Enter, 화살표 키 등을 눌렀을 때 발생하는 이벤트입니다. 이 이벤트는 사용자가 UI를 탐색하고 있다는 것을 나타내며, 포커스 없이도 UI 요소 간에 이동할 수 있습니다.
모든 내비게이션 이벤트는 NavigationEventBase
라는 기본 클래스를 가지고 있으며, 각각의 이벤트는 트리클다운, 버블업, 그리고 취소가 가능하다는 특징이 있습니다.
내비게이션 이벤트 종류
이벤트 | 설명 | 트리클다운 | 버블업 | 취소 가능 |
---|---|---|---|---|
NavigationMoveEvent | 사용자가 이동 입력을 할 때 전송됩니다. | ✔ | ✔ | ✔ |
NavigationCancelEvent | 사용자가 취소 입력을 할 때 전송됩니다. | ✔ | ✔ | ✔ |
NavigationSubmitEvent | 사용자가 제출 입력을 할 때 전송됩니다. | ✔ | ✔ | ✔ |
NavigationMoveEvent
이 이벤트는 사용자가 D패드, 조이스틱, 또는 화살표 키를 사용할 때 발생합니다. 일부 컨트롤에서는 자체적으로 화살표 키를 사용할 수 있으므로 이 경우 이벤트가 취소될 수 있습니다.
- direction: 내비게이션 방향 (예: None, Left, Up, Right, Down)
- move: 이동 벡터 (조이스틱과 같은 아날로그 입력에서의 방향 벡터)
NavigationCancelEvent
사용자가 Escape 키를 눌렀을 때 발생하여 현재 내비게이션 동작을 취소합니다. 하지만, 포커스가 맞춘 UI 요소의 상태에는 영향을 미치지 않습니다.
NavigationSubmitEvent
사용자가 Enter 키를 눌렀을 때 발생합니다. 포커스가 맞춰진 UI 요소는 이 이벤트를 처리하여 버블업되지 않도록 할 수 있습니다.
예제 코드
내비게이션 이벤트의 콜백을 등록하는 방법을 보여주는 예제입니다.
using UnityEngine.UIElements;
public class MyNavigationHandler : MonoBehaviour
{
void OnEnable()
{
// 루트 비주얼 요소 가져오기
var uiDocument = GetComponent<UIDocument>();
var rootVisualElement = uiDocument.rootVisualElement;
// 내비게이션 이벤트 등록
rootVisualElement.RegisterCallback<NavigationCancelEvent>(OnNavCancelEvent);
rootVisualElement.RegisterCallback<NavigationMoveEvent>(OnNavMoveEvent);
rootVisualElement.RegisterCallback<NavigationSubmitEvent>(OnNavSubmitEvent);
}
private void OnNavSubmitEvent(NavigationSubmitEvent evt)
{
Debug.Log($"OnNavSubmitEvent {evt.propagationPhase}");
}
private void OnNavMoveEvent(NavigationMoveEvent evt)
{
Debug.Log($"OnNavMoveEvent {evt.propagationPhase} - move {evt.move} - direction {evt.direction}");
}
private void OnNavCancelEvent(NavigationCancelEvent evt)
{
Debug.Log($"OnNavCancelEvent {evt.propagationPhase}");
}
}
추가 리소스
Unity UI를 활용하여 사용자 경험을 향상시키는 데 위의 내비게이션 이벤트를 적절히 활용하시기 바랍니다.