Unity UI 툴킷으로의 마이그레이션 가이드
이 문서는 즉시 모드 GUI(IMGUI)에서 Unity의 UI 툴킷으로 마이그레이션하는 방법을 설명합니다. 특히 에디터 UI에 중점을 두지만 런타임 UI에도 적용될 수 있는 내용입니다.
주요 차이점
코드 기반 vs UI 기반
- IMGUI: C# 스크립트의
OnGUI
함수에서 호출하는 코드 기반 방식입니다. - UI 툴킷: C# 스크립트를 통해 동작을 정의하며, 시각적 요소와 스타일을 UI 빌더 또는 UXML 파일에서 정의할 수 있습니다.
즉시 모드 vs 보류 모드
- IMGUI: 매 프레임마다 리페인팅.process happening with
OnGUI()
하지만 관련된 영구 정보는 없습니다. - UI 툴킷: 시각적 트리 구조를 형성하여 정보가 영구적으로 유지됩니다.
불변 vs 상태 변화
- IMGUI: 매 프레임마다 UI의 형태와 작동이 정의됩니다.
- UI 툴킷: 이벤트 기반 시스템으로 UI의 기본 상태와 동작을 정의합니다.
IMGUI에서 UI 툴킷으로의 전환 예시
IMGUI 버튼 예시
if (GUILayout.Button("Click me!"))
{
// 버튼 클릭 시 실행되는 코드.
}
else
{
// 다른 프레임에서 발생하는 코드.
}
UI 툴킷 버튼 예시
UIDocument document = GetComponent<UIDocument>();
// 버튼 생성.
Button button = new Button();
button.text = "Click me!";
// 이벤트 핸들러 설정.
button.RegisterCallback<ClickEvent>((ClickEvent evt) =>
{
// 버튼 클릭 후 실행되는 코드.
});
// UI에 버튼 추가.
document.rootVisualElement.Add(button);
IMGUI 및 UI 툴킷 함수 비교
액션 | IMGUI | UI 툴킷 |
---|---|---|
에디터 창 생성 | EditorWindow.OnGUI() | EditorWindow.CreateGUI() |
프로퍼티 드로어 생성 | PropertyDrawer.OnGUI() | PropertyDrawer.CreatePropertyGUI() |
커스텀 인스펙터 생성 | Editor.OnInspectorGUI() | Editor.CreateInspectorGUI() |
IMGUI 및 UI 툴킷 메서드/클래스/속성 비교
IMGUI | IMGUI 네임스페이스 | UI 툴킷 |
---|---|---|
AddCursorRect() | EditorGUIUtility | VisualElement.style.cursor 설정 |
BeginArea() | GUILayout | VisualElement 생성 |
ColorField() | EditorGUI, EditorGUILayout | VisualElement 관련 이벤트 사용 |
Button() | GUI, GUILayout | Button 생성 |
추가 리소스
이 문서를 통해 IMGUI에서 UI 툴킷으로의 마이그레이션을 보다 쉽게 이해하고 적용할 수 있기를 바랍니다. 추가 질문이나 구체적인 사용법이 필요할 경우 Unity 공식 문서나 커뮤니티 포럼을 참고하세요.