Version: 2022.3
언어: 한국어
변경 이벤트
커맨드 이벤트

클릭 이벤트

ClickEvent는 사용자가 VisualElement 위에 마우스 커서를 올리고 마우스 왼쪽 버튼(또는 포인팅 기기의 첫 번째 버튼)을 누르면 발생합니다.

클릭은 같은 VisualElement에서 포인터 다운 이벤트 발생 후 포인터 업 이벤트 발생으로 구성됩니다. 다운 이벤트와 업 이벤트가 같은 VisualElement에서 발생하는 한, 두 이벤트 사이에 포인터가 움직일 수 있습니다.

이 이벤트는 버튼이 아닌 시각적 요소에서 클릭을 감지하는 데 사용할 수 있습니다. 예를 들어, Toggle 컨트롤의 구현은 ClickEvent를 사용하여 체크 표시를 나타내거나 숨기고 컨트롤의 값을 변경합니다.

ClickEvent의 기본 클래스는 PointerEventBase입니다. 자세한 내용은 포인터 이벤트에 관한 문서를 참조하십시오.

이벤트 설명 트리클다운 버블업 취소 가능
ClickEvent 마우스 왼쪽 버튼을 클릭하면 발생합니다.

고유 프로퍼티

ClickEvent는 고유한 프로퍼티가 없으나, 기본 클래스의 모든 프로퍼티를 상속합니다. 프로퍼티 리스트는 포인터 이벤트 페이지를 참조하십시오.

이벤트 리스트

ClickEvent

시각적 요소 위에 마우스 커서를 올리고 마우스 왼쪽 버튼을 클릭하면 Unity가 이 이벤트를 전송합니다.

target: 클릭 발생 시 마우스나 포인팅 기기 아래에 있었던 요소입니다.

다음 예제는 시각적 요소에 대한 ClickEvent를 등록하는 예제입니다.

btnClose.RegisterCallback<ClickEvent, VisualElement>(Clicked, asset); // asset is the root visual element that will be closed

private void Clicked(ClickEvent evt, VisualElement root)
{
  root.ShowVisualElement(false); 
}

예제

다음 예제는 색칠된 시각적 요소에서 ClickEvent에 반응하는 방식을 나타냅니다. 요소를 클릭하면 요소의 컬러가 새로운 무작위 컬러로 변경됩니다.

예제의 동작을 확인하려면 다음을 수행하십시오.

  1. ClickEventExampleWindow라는 새로운 C# 스크립트를 만듭니다.
  2. 예제를 C# 스크립트에 복사합니다.
  3. Window > UI Toolkit > Click Event Example에서 새로 만든 에디터 창을 엽니다.
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

public class ClickEventExampleWindow : EditorWindow
{
  [MenuItem("Window/UI Toolkit/ClickEventExample")]
  public static void ShowExample()
  {
    var wnd = GetWindow<ClickEventExampleWindow>();
    wnd.titleContent = new GUIContent("Click Event Example");
  }

  public void CreateGUI()
  {
    // Create a few different colored boxes
    for (int i = 0; i < 4; i++)
    {
      // Create VisualElement with random background color
      var newBox = new VisualElement() { style = { flexGrow = 1, backgroundColor = GetRandomColor() } };
      rootVisualElement.Add(newBox);

      // Register a click event to the visual element to change the background color to a new color
      newBox.RegisterCallback<ClickEvent>(OnBoxClicked);
    }
  }

  private void OnBoxClicked(ClickEvent evt)
  {
    // Only perform this action at the target, not in a parent
    if (evt.propagationPhase != PropagationPhase.AtTarget)
      return;

    // Assign a random new color
    var targetBox = evt.target as VisualElement;
    targetBox.style.backgroundColor = GetRandomColor();
  }

  private Color GetRandomColor()
  {
    return new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));
  }
}
변경 이벤트
커맨드 이벤트