Version: Unity 6.0 (6000.0)
언어 : 한국어
패널 이벤트
툴팁 이벤트

포인터 이벤트

포인터 이벤트는 포인팅 기기와의__ UI__(사용자 인터페이스) 사용자가 애플리케이션과 상호 작용하도록 해 줍니다. Unity는 현재 3개의 UI 시스템을 지원합니다. 자세한 정보
See in Glossary
상호 작용 시 발생합니다. 마우스 이벤트와 마찬가지로, 포인터 이벤트는 사용된 입력 기기에 대한 추가 정보(예: 펜 압력, 기울기 각도)를 제공합니다.

UI 툴킷에서 포인터 이벤트는 항상 마우스 이벤트보다 앞섭니다.

포인터 이벤트에는 영구적인 위치가 없습니다. 또한 터치 기기에서 놓을 때 설정된 위치가 없습니다.

PointerStationaryEventPointerCancelEvent 이벤트 같은 일부 포인터 이벤트에는 입력 기기의 OS(운영 체제)에 의해 트리거되는 조건이 있습니다.

모든 포인터 이벤트의 기본 클래스는 PointerEventBase입니다.

이벤트 설명 트리클다운 버블업 취소 가능
PointerDownEvent 포인터를 누를 때 전송됩니다. 지원 지원 지원
PointerUpEvent 포인터를 놓을 때 전송됩니다. 지원 지원 지원
PointerMoveEvent 포인터 상태가 변경될 때 전송됩니다. 지원 지원 지원
PointerEnterEvent 포인터가 시각적 요소 또는 요소의 자손에 들어갈 때 전송됩니다. 지원 지원
PointerLeaveEvent 포인터가 시각적 요소 및 해당 요소의 모든 자손을 떠날 때 전송됩니다. 지원 지원
PointerOverEvent 포인터가 시각적 요소에 들어갈 때 전송됩니다. 지원 지원 지원
PointerOutEvent 포인터가 시각적 요소를 떠날 때 전송됩니다. 지원 지원 지원
PointerStationaryEvent 스타일러스나 손가락 등 포인터 유형이 운영 체제에서 정한 시간 내에 변경되지 않으면 전송됩니다. 지원 지원 지원
PointerCancelEvent 운영 체제가 포인터 액션을 취소할 때 전송됩니다. 지원 지원 지원

고유한 프로퍼티

altitudeAngle: altitudeAngle에는 표면을 기준으로 한 스타일러스의 각도가 라디안 단위로 표시됩니다. 값이 0이면 스타일러스가 표면과 평행함을 나타냅니다. 값이 pi/2이면 표면에 수직임을 나타냅니다.

azimuthAngle: azimuthAngle에는 x축을 기준으로 한 스타일러스의 각도가 라디안 단위로 표시됩니다. 값이 0이면 스타일러스가 기기의 x축을 가리킵니다.

button: button 프로퍼티는 이벤트를 트리거하기 위해 누른 마우스 버튼을 식별하는 정수를 반환합니다. 다음 표에는 정수 및 연결된 마우스 버튼이 나열되어 있습니다.

정수 버튼
0 왼쪽 버튼
1 오른쪽 버튼
2 가운데 버튼

clickCount: clickCount 프로퍼티에는 버튼을 누른 횟수가 포함되어 있습니다.

deltaPosition: deltaPosition 프로퍼티에는 이전 마우스 이벤트 동안의 포인터 위치와 현재 마우스 이벤트 동안의 포인터 위치 간의 차이가 포함되어 있습니다.

deltaTime: deltaTime 프로퍼티에는 포인터 값의 마지막 기록 변경 이후 경과된 시간(초)이 포함되어 있습니다.

localPosition: localPosition 프로퍼티는 타겟 시각적 요소를 기준으로 포인터 위치를 반환합니다.

modifiers: modifiers 프로퍼티는 현재 누르고 있는 수정자 키를 반환합니다. 수정자의 예시로는 Shift, Ctrl, Alt 키가 있습니다. 자세한 내용은 MDN 기술 자료의 수정자 키 섹션을 참조하십시오.

pointerId: pointerId 프로퍼티는 이벤트를 전송하는 포인터를 식별하는 정수를 반환합니다.

pointerType: pointerType 프로퍼티는 이벤트를 생성하는 포인터 유형을 정의하는 문자열을 반환합니다.

position: position 프로퍼티는 화면 또는 월드 좌표 시스템에 있는 포인터 위치를 반환합니다.

pressedButtons: pressedButton 프로퍼티는 현재 누른 마우스 버튼 조합을 식별하는 정수를 반환합니다.

숫자는 개별 버튼 정수 값의 합입니다(아래 표 참조). 예를 들어 마우스 오른쪽 버튼과 마우스 가운데 버튼을 동시에 누르고 있으면 pressedButton의 값은 6이 됩니다.

정수 버튼
1 왼쪽 버튼
2 오른쪽 버튼
4 가운데 버튼

pressure: pressure 프로퍼티는 현재 터치로 가해지는 압력의 양을 반환합니다. 기기가 압력을 보고하지 않으면 이 프로퍼티의 값은 1.0f입니다.

radius: radius 프로퍼티는 터치의 반지름에 대한 추정값을 반환합니다. 최대 터치 반지름을 얻으려면 radiusVariance를 더하고 최소 터치 반지름을 얻으려면 이를 뺍니다.

radiusVariance: radiusVariance 프로퍼티 값에 따라 터치 반지름의 정확도가 결정됩니다. 최대 터치 반지름을 얻으려면 이 값을 반지름에 더하고 최소 터치 반지름을 얻으려면 뺍니다.

tangentialPressure: tangentialPressure 프로퍼티는 스타일러스의 추가 압력 감지 컨트롤에 가해진 압력을 나타내는 플로트 값을 반환합니다.

twist: twist 프로퍼티는 축을 중심으로 한 스타일러스의 회전(라디안 단위)을 반환합니다.

이벤트 리스트

다음 리스트는 이벤트 패밀리에 있는 각 이벤트의 이름, 설명, 타겟을 제공합니다. 이벤트에 대한 자세한 내용은 UI 툴킷 API를 참조하십시오.

PointerDownEvent

PointerDownEvent는 시각적 요소 내에서 포인터를 누를 때 전송됩니다.

target: 포인터 캡처를 수신하는 시각적 요소입니다. 또는 커서 아래에서 선택 가능한 최상단 요소입니다.

PointerUpEvent

PointerUpEvent는 시각적 요소 내에서 포인터를 뗄 때 트리거됩니다.

PointerUpEvent 이벤트가 트리거되면 포인터 좌표도 제거됩니다. 또한 포인터의 캐시를 지우므로 포인터 위치에 대한 기록이 없습니다.

target: 포인터 캡처를 수신하는 시각적 요소입니다. 또는 커서 아래에서 선택 가능한 최상단 요소입니다.

PointerMoveEvent

PointerMoveEvent는 포인터 상태가 변경될 때 발생합니다.

target: 포인터 캡처를 수신하는 시각적 요소입니다. 또는 커서 아래에서 선택 가능한 최상단 요소입니다.

PointerEnterEvent

PointerEnterEvent는 포인터가 시각적 요소 또는 요소의 자손에 들어갈 때 전송됩니다.

target: 포인터가 나가는 시각적 요소(또는 그 자손 중 하나)입니다.

PointerLeaveEvent

PointerLeaveEvent는 포인터가 시각적 요소 및 해당 요소의 모든 자손을 떠날 때 전송됩니다. 예를 들어 시각적 요소에 자식이 포함된 경우, 포인터가 부모 또는 자식 위에 없을 때 부모 요소가 이 이벤트를 수신합니다. 부모 요소는 포인터 아래의 최상위 요소가 아니더라도 포인터가 자식 요소 중 하나 위에 있는 동안 PointerLeaveEvent를 수신하지 않습니다. 대신 PointerOverEvent를 수신하게 됩니다.

target: 포인터가 나가는 시각적 요소(또는 그 자손 중 하나)입니다.

PointerOverEvent

PointerOverEvent는 포인터가 시각적 요소에 들어갈 때 전송됩니다.

target: 포인터 아래에 있는 시각적 요소입니다.

PointerOutEvent

PointerOutEvent는 포인터가 시각적 요소를 떠날 때 전송됩니다.

target: 포인터가 있는 시각적 요소입니다.

PointerStationaryEvent

PointerStationaryEvent는 스타일러스나 손가락 등 포인터 유형이 운영 체제에서 정한 시간 내에 변경되지 않으면 전송됩니다.

target: 포인터를 캡처하는 시각적 요소 또는 포인터 아래에서 선택 가능한 최상위 요소입니다.

PointerCancelEvent

PointerCancelEvent는 운영 체제가 포인터 액션을 취소할 때 전송됩니다.

target: 포인터를 캡처하는 시각적 요소 또는 포인터 아래에서 선택 가능한 최상위 요소입니다.

예제

다음 코드 샘플에서는 노란색 상자가 포함된 빨간색 상자가 있는 에디터 창을 생성합니다. 포인터가 시각적 요소 또는 해당 자식에서 나갈 때 콘솔에 메시지를 출력합니다. PointerOutEventPointerLeaveEvent의 동작을 보여 줍니다.

예제의 동작을 확인하려면 다음 단계를 따르십시오.

  1. Assets > Scripts > Editor에서 PointerEventsTestWindow.uxml이라는 새 UXML 파일을 생성합니다.
  2. 아래의 UXML 코드를 복사하여 붙여 넣습니다.
  3. Assets > Scripts > Editor에서 PointerEventsTestWindow.cs라는 새 C# 파일을 생성합니다.
  4. 코드 샘플을 복사하여 C# 스크립트에 붙여 넣습니다.
  5. 에디터 툴바에서 Window > UI Toolkit > Pointer Events Test Window를 선택합니다.

UXML 코드

<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
    <ui:VisualElement style="flex-grow: 1; justify-content: center; align-items: center;">
        <ui:VisualElement name="Red_Box" style="background-color: rgb(183, 34, 46); width: 50%; height: 50%; align-items: center; justify-content: center;">
            <ui:VisualElement name="Yellow_Box" style="width: 175%; height: 50%; background-color: rgb(197, 163, 0);" />
        </ui:VisualElement>
    </ui:VisualElement>
</ui:UXML>

C# 코드


using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;

public class PointerEventsTestWindow : EditorWindow
{
    [MenuItem("Window/UI Toolkit/Pointer Events Test Window")]
    public static void ShowExample()
    {
        PointerEventsTestWindow wnd = GetWindow<PointerEventsTestWindow>();
        wnd.titleContent = new GUIContent("Pointer Events Test Window");
    }

    public void CreateGUI()
    {
        // Import UXML
        VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Scripts/Editor/PointerEventsTestWindow.uxml");
        visualTree.CloneTree(rootVisualElement);

        // Get the red box and register pointer event callbacks
        VisualElement redBox = rootVisualElement.Q("Red_Box");
        redBox.RegisterCallback<PointerOutEvent>(OnPointerOutEvent, TrickleDown.TrickleDown);
        redBox.RegisterCallback<PointerLeaveEvent>(OnPointerLeaveEvent, TrickleDown.TrickleDown);
    }

    private void OnPointerLeaveEvent(PointerLeaveEvent evt)
    {
        Debug.Log($"Pointer LEAVE Event. Target: {(evt.target as VisualElement).name}");
    }

    private void OnPointerOutEvent(PointerOutEvent evt)
    {
        Debug.Log($"Pointer OUT Event. Target: {(evt.target as VisualElement).name}");
    }
}

추가 리소스

패널 이벤트
툴팁 이벤트