Unity 사용자 매뉴얼: 클릭 이벤트 이해하기
이 문서는 Unity의 사용자 인터페이스(UI)에서 발생하는 클릭 이벤트에 대해 설명합니다. 클릭 이벤트는 사용자가 VisualElement 위에서 마우스를 클릭할 때 발생하며, 이를 활용하여 다양한 기능을 구현할 수 있습니다.
클릭 이벤트란?
클릭 이벤트(ClickEvent)는 사용자가 VisualElement 위에 마우스 커서를 올리고 마우스 왼쪽 버튼을 누를 때 발생합니다. 클릭은 다음 두 가지 동작으로 구성됩니다: - 포인터 다운(Event): 사용자가 버튼을 눌렀을 때 발생합니다. - 포인터 업(Event): 사용자가 버튼을 떼었을 때 발생합니다.
포인터가 두 이벤트 사이에 같은 VisualElement 안에서만 움직인다면, Unity는 이를 클릭으로 인식합니다. 또한, 클릭 이벤트는 버튼이 아닌 다른 시각적 요소에서도 감지할 수 있습니다. 예를 들어, Toggle 컨트롤에서는 클릭 이벤트를 통해 체크 표시를 변경합니다.
클릭 이벤트 프로퍼티
ClickEvent는 특별한 프로퍼티를 가지고 있지 않지만, 기본 클래스인 PointerEventBase
의 모든 프로퍼티를 상속받습니다. 관련 프로퍼티 목록은 포인터 이벤트 문서를 참조하세요.
이벤트 설명
이벤트 | 설명 | 트리 | 클릭 다운 | 버블 | 업 | 취소 가능 |
---|---|---|---|---|---|---|
ClickEvent | 마우스 왼쪽 버튼을 클릭하면 발생합니다. | ✔ | ✔ | ✔ | ✔ | ✔ |
클릭 이벤트 예제
다음은 VisualElement에 클릭 이벤트를 등록하는 간단한 예제입니다.
btnClose.RegisterCallback<ClickEvent, VisualElement>(Clicked, asset); // asset은 닫을 루트 시각적 요소입니다.
private void Clicked(ClickEvent evt, VisualElement root)
{
root.ShowVisualElement(false);
}
색상 변경 예제
아래 예제는 클릭 이벤트를 통해 색상이 변경되는 VisualElement를 보여줍니다. 클릭 시 요소의 색상이 무작위로 변경됩니다.
ClickEventExampleWindow
라는 새로운 C# 스크립트를 생성합니다.- 아래 코드를 복사하여 스크립트에 붙여넣습니다.
- 메뉴에서
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()
{
// 다양한 색상의 박스를 생성합니다.
for (int i = 0; i < 4; i++)
{
var newBox = new VisualElement() { style = { flexGrow = 1, backgroundColor = GetRandomColor() } };
rootVisualElement.Add(newBox);
newBox.RegisterCallback<ClickEvent>(OnBoxClicked);
}
}
private void OnBoxClicked(ClickEvent evt)
{
if (evt.propagationPhase != PropagationPhase.AtTarget)
return;
// 무작위 색상을 할당합니다.
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));
}
}
결론
클릭 이벤트는 Unity의 UI 툴킷에서 매우 중요한 역할을 하며, 이를 통해 사용자와의 상호작용을 향상시킬 수 있습니다. 위의 예제를 참고하여 게임이나 응용 프로그램에서 클릭 이벤트를 효과적으로 활용해 보세요.