Version: 2020.1
언어: 한국어
사용자 인터페이스(UI) 생성
UI 툴킷

Unity의 UI 시스템 비교

Unity는 UI 툴킷이 새로운 UI 개발 프로젝트를 위한 권장 UI 시스템이 되길 원하지만, Unity UI(uGUI) 및 IMGUI에 있는 몇 가지 기능이 아직 제공되지 않습니다. 이러한 예전 시스템은 특정 사용 사례에 더 적합하며, 레거시 프로젝트를 지원하는 데 필요합니다.

이 페이지에서는 UI 툴킷, Unity UI 및 IMGUI의 간략한 기능 비교와 UI 디자인에 대한 각각의 접근 방식에 대한 참고 사항을 제공합니다. 이를 통해 프로젝트에 적합한 UI 시스템을 결정하십시오.

중요
UI 툴킷은 실험 단계에 있는 기능입니다. 이 페이지는 기능 집합의 발전에 따라 주기적으로 업데이트됩니다.

일반적인 고려 사항

UI 타입: 에디터 또는 런타임

UI 시스템 선택은 Unity 에디터용 UI를 개발하는지, 게임 또는 애플리케이션용 런타임 UI를 개발하는지에 따라 다릅니다.

UI 타입 UI 툴킷 Unity UI(uGUI) IMGUI 참고:
런타임(디버그) ✔ * 디버그 목적으로 사용되는 임시 런타임 UI를 나타냅니다.
런타임(게임 내) ✔ * 권장하지 않음 성능상의 이유로 Unity는 게임 내 런타임 UI에 IMGUI를 권장하지 않습니다.
Unity 에디터 Unity UI를 사용하여 Unity 에디터용 UI를 생성할 수 없습니다.

* 현재 프리뷰 단계에 있는 UI 툴킷 패키지가 필요합니다.

런타임 UI를 생성하려면 UI 툴킷과 Unity UI(uGUI) 중에서 선택해야 합니다. 기능 비교: UI 툴킷 vs. Unity UI(uGUI)를 참조하십시오.

Unity 에디터용 UI를 생성하려면 UI 툴킷과 IMGUI 중에서 선택해야 합니다. 기능 비교: UI 툴킷 vs. IMGUI를 참조하십시오.

역할 및 능력 세트

다양한 기술에 대한 팀의 능력 세트와 숙련도 수준도 중요한 고려 사항입니다.

사용자 타입 UI 툴킷 Unity UI
(uGUI)
IMGUI 참고:
프로그래머 프로그래머는 모든 게임 개발 툴 또는 API를 사용할 수 있습니다.
테크니컬 아티스트 부분적 Unity의 게임 오브젝트 기반 툴과 워크플로에 익숙한 테크니컬 아티스트는 게임 오브젝트, 컴포넌트 및 씬 뷰 작업이 편하게 느껴질 것입니다.

하지만 UI 툴킷의 웹 기반 접근 방식이나 IMGUI의 순수 C# 접근 방식에는 익숙하지 않을 수 있습니다.
UI 디자이너 부분적 UI 생성 툴에 익숙한 UI 디자이너는 UI 툴킷의 문서 기반 접근 방식이 익숙하게 느껴질 것입니다.

게임 오브젝트 기반 워크플로에 익숙하지 않다면 프로그래머나 레벨 디자이너의 도움이 필요할 수 있습니다.

혁신과 개발

UI 툴킷은 실험 단계에 있는 기능입니다. Unity는 릴리스마다 새로운 기능을 추가합니다. Unity UI와 IMGUI는 프로덕션에 사용할 수 있다고 입증된 기존 UI 시스템이지만, 업데이트 빈도가 낮습니다.

UI 툴킷에서 아직 제공되지 않는 기능이 필요하거나, 과거 UI 콘텐츠를 지원하거나 재사용하려는 경우 Unity UI와 IMGUI가 더 나은 선택일 수 있습니다.

기능 비교: UI 툴킷 vs. Unity UI(uGUI)

\이 섹션에서는 게임 및 애플리케이션용 런타임 UI 개발에 사용되는 UI 툴킷과 Unity UI(TextMesh Pro 패키지 포함)를 비교합니다.

Unity 에디터 UI 개발

Unity UI를 사용하여 Unity 에디터용 사용자 인터페이스를 개발할 수 없습니다.

워크플로

기능 UI 툴킷 UGUI+TMP 참고:
네스티드 프리팹 부분적 UI 툴킷의 UXML 템플릿은 Unity 프리팹 시스템에서 수정된 프로퍼티와 유사한 속성 오버라이드를 지원합니다.

UGUI는 게임 오브젝트에 기반하며, 일반 Unity 프리팹을 지원합니다.
WYSIWYG 작성 Unity UI와 UI 툴킷은 매우 다른 WYSIWYG 작성 환경을 제공합니다.

Unity UI는 게임 오브젝트에 기반하므로 WYSIWYG 작성을 위한 씬 뷰를 설정할 수 있습니다.

UI 툴킷은 웹과 유사한 워크플로를 사용하는 문서 기반 WYSIWYG UI 작성용 UI 빌더 패키지(현재 프리뷰 단계)를 제공합니다.
테마 지정 계획됨 UI 툴킷 로드맵은 UI 빌더 및 USS 임포트를 통한 테마 지정 기능을 지원합니다.
레이아웃 및 스타일 지정 디버거 인스펙터 창에서 Unity UI 인터페이스를 디버깅할 수 있습니다.

UI 툴킷은 주요 웹 브라우저에서 찾을 수 있는 디버그 툴과 유사한 전용 디버거(메뉴: Window > UI Toolkit > Debugger)를 제공합니다.
씬 통합 Unity UI 게임 오브젝트는 씬 뷰와 게임 뷰에 표시됩니다.

런타임 컴포넌트를 통해 UI 툴킷 패키지(현재 프리뷰 단계)에서 생성된 런타임 UI를 통합하고, 게임 뷰에 표시할 수 있습니다.

스타일 지정

기능 UI 툴킷 UGUI+TMP 참고:
인라인 스타일
캐스케이딩 스타일
유사 상태(예: 호버 또는 활성) Unity UI는 단순한 유사 상태를 제공하며, Unity의 애니메이션 그래프를 사용하여 복잡한 유사 상태를 생성할 수 있습니다.

UI 툴킷은 USS를 통해 유사 상태를 지원합니다.
리치 텍스트 태그 계획됨 UI 툴킷의 리치 텍스트 태그 지원은 Unity의 텍스트 렌더링 백엔드 업데이트의 일부로 계획되어 있습니다.

Unity UI는 기본적으로 리치 텍스트 태그의 기본 집합을 지원하고, TextMesh Pro 패키지를 통해 더 큰 집합을 지원합니다.
SDF 텍스트 계획됨 UI 툴킷의 SDF 텍스트 지원은 Unity의 텍스트 렌더링 백엔드 점검의 일부로 계획되어 있습니다.

Unity UI는 TextMesh Pro 패키지를 통해 SDF 텍스트를 지원합니다.
폰트 폴백 계획됨 UI 툴킷의 폰트 에셋 및 폴백 폰트 지원은 Unity의 텍스트 렌더링 백엔드 점검의 일부로 계획되어 있습니다.

Unity UI는 TextMesh Pro 패키지를 통해 폴백 폰트를 지원합니다.

레이아웃

Unity UI와 UI 툴킷은 동일한 레이아웃 가능성을 제공하지만, 레이아웃 시스템은 매우 다릅니다.

  • Unity UI에서는 RectTransForm 컴포넌트를 사용하여 게임 오브젝트 수준에서 레이아웃을 제어합니다.
  • UI 툴킷에서는 웹과 유사한 Flexbox 기반 레이아웃 시스템을 사용하여 USS 스타일시트에서 레이아웃을 정의합니다.
기능 UI 툴킷 UGUI+TMP 참고:
수동 레이아웃(부모에 대해 상대적 또는 절대적)
1차원(수평 및 수직)
2차원(그리드) 연구 Unity UI는 GridLayoutGroup 컴포넌트를 제공합니다.

UI 툴킷의 경우 Unity는 USS에서 CSS 스타일의 그리드를 구현하기 위한 방안을 조사 중입니다.

이벤트

기능 UI 툴킷 UGUI+TMP 참고:
Unity의 새로운 입력 시스템과의 통합 계획됨
직렬화된 이벤트 계획됨 UI 툴킷은 C#의 요소에만 이벤트를 바인딩할 수 있습니다.

Unity UI는 이벤트 바인딩을 직렬화할 수 있습니다.
이벤트에 대한 시각적 스크립팅 연구

렌더링(Rendering)

UI 툴킷과 Unity UI 간의 선택은 고성능과 활용도/지원 기능 간의 장단점을 고려하여 이루어집니다.

UI 툴킷은 현재 더 적은 수의 기능을 제공하지만, 렌더링 성능에 대해 더 쉽게 최적화할 수 있습니다. 또한 문서 기반 및 데이터 중심이며, 단일 셰이더, 머티리얼, 텍스처 아틀라스를 사용하여 요소 계층 구조를 그립니다. 복잡한 요소 계층 구조를 포함하고 모든 플랫폼에서 잘 작동하는 간단한 스크린 공간 UI(예: 메뉴 또는 헤드업 디스플레이)에 적합합니다.

Unity UI는 활용도가 더 높고, 고급 렌더링 및 텍스트 기능을 지원합니다. 커스텀 머티리얼로 모든 시각적 요소를 설정하고, 고급 클리핑 및 마스킹 기능을 이용할 수 있습니다. 하지만 이러한 기능으로 인해 성능 할당량 내에서 복잡한 UI를 유지하기가 어려울 수 있습니다.

기능 UI 툴킷 UGUI+TMP 참고:
빌트인 렌더 파이프라인 지원
유니버설 렌더 파이프라인(URP) 지원
고해상도 렌더 파이프라인(HDRP) 지원
스크린 공간(2D) 렌더링
월드 공간(3D) 렌더링 계획됨
커스텀 머티리얼 및 셰이더 계획됨
셰이더 그래프 통합 계획됨
SVG 통합 계획됨 계획됨 com.unity.vectorgraphics 패키지는 Unity UI에 대한 SVG 지원을 제공합니다. 하지만 이 패키지는 현재 프리뷰 단계이며, 프로덕션에는 권장하지 않습니다.
안티앨리어싱 계획됨 부분적 Unity UI의 Screen Space-CameraWorld Space 렌더링 모드는 안티앨리어싱을 적용하는 카메라를 사용합니다.
2D 회전(오브젝트가 UI 평면에 남아 있음)
3D 회전 계획됨
직사각형 클리핑 부분적 UI 툴킷은 회전 없는 직사각형 클리핑을 지원합니다. 직사각형은 축에 정렬되어야 합니다.
마스크 클리핑 부분적 UI 툴킷은 2D 회전이 있는 마스크 클리핑을 지원합니다.

Unity UI는 3D 마스크 회전을 지원합니다.
중첩 마스킹 부분적/계획됨 UI 툴킷의 중첩 마스킹은 한 개의 레벨로 제한되지만, 드로우 콜 배칭에는 영향을 미치지 않습니다. 멀티 레벨 중첩 마스킹이 계획되어 있습니다.

Unity UI는 최대 8개 레벨의 중첩 마스킹을 지원하지만, 두 개 레벨마다 드로우 콜 배칭을 중단시킵니다.

애니메이션

기능 UI 툴킷 UGUI+TMP 참고:
트위닝 워크플로 실험 기능 부분적
애니메이션 클립 및 타임라인과의 통합 계획됨

커스터마이즈 가능성

기능 UI 툴킷 UGUI+TMP 참고
오픈소스/커스터마이즈 가능 계획됨 UI 툴킷 패키지(현재 프리뷰 단계)는 커스터마이즈가 가능합니다.

기능 비교: UI 툴킷 vs. IMGUI

이 섹션에서는 Unity 에디터용 사용자 인터페이스 개발에 사용되는 UI 툴킷과 IMGUI를 비교합니다.

인스펙터 통합

Feature UI Toolkit IMGUI Notes
Default Inspectors Planned UI Toolkit will become the default UI backend for Inspector windows (for when a type does not have custom editors).
Inspector: Edit custom object types
Inspector: Edit custom property types
Inspector: Mixed values (multi-editing) support Planned
Array / list-view control Planned

컨트롤 및 데이터 바인딩

기능 UI 툴킷 IMGUI 참고:
트리 뷰 계획됨
그리드 뷰 계획됨
그래프 뷰 계획됨
데이터 바인딩: 직렬화된 프로퍼티
C# 타입에서 데이터 바인딩 계획됨
속성 또는 스타일 값에 대한 데이터 바인딩 계획됨

워크플로

Feature UI Toolkit IMGUI Notes
Nested Prefabs Partial UI Toolkit’s UXML templates support attribute overrides, which are similar to modified properties in the Unity Prefab system.
WYSIWYG authoring UI Toolkit provides the UI Builder package (currently in preview) for document-based WYSIWYG UI authoring with a web-like workflow.
Theming Planned
Layout & Styling Debugger IMGUI has a limited debugging tool for layouts and styles.

UI Toolkit provides a dedicated debugger (menu: Window > UI Toolkit > Debugger) that is similar to debug tools found in major web browsers.
Scene View integration

스타일 지정

기능 UI 툴킷 IMGUI 참고:
인라인 스타일
캐스케이딩 스타일
유사 상태(예: 호버 또는 활성) 부분적
리치 텍스트 태그 계획됨 UI 툴킷의 리치 텍스트 태그 지원은 Unity의 텍스트 렌더링 백엔드 업데이트의 일부로 계획되어 있습니다.
SDF 텍스트 계획됨 UI 툴킷의 SDF 텍스트 지원은 Unity의 텍스트 렌더링 백엔드 업데이트의 일부로 계획되어 있습니다.
폰트 폴백 계획됨

레이아웃

Unity UI와 IMGUI는 동일한 레이아웃 가능성을 제공하지만, 레이아웃 시스템은 매우 다릅니다.

  • IMGUI는 C# 기반 GUILayout 시스템을 사용합니다.
  • UI 툴킷은 웹과 유사한 Flexbox 기반 레이아웃 시스템을 사용합니다. USS 스타일을 통해 레이아웃을 제어합니다.
기능 UI 툴킷 IMGUI 참고:
수동 레이아웃(부모에 대해 상대적 또는 절대적)
1차원(수평 및 수직)
2차원(그리드) 연구 중 UI 툴킷의 경우 Unity는 USS에서 CSS 스타일의 그리드를 구현하기 위한 방안을 조사 중입니다.

이벤트

기능 UI 툴킷 IMGUI 참고:
Unity의 새로운 입력 시스템과의 통합 계획됨
직렬화된 이벤트 계획됨
이벤트에 대한 시각적 스크립팅 연구

렌더링(Rendering)

기능 UI 툴킷 IMGUI 참고:
빌트인 렌더 파이프라인 지원
유니버설 렌더 파이프라인(URP) 지원
고해상도 렌더 파이프라인(HDRP) 지원
스크린 공간(2D) 렌더링
월드 공간(3D) 렌더링 계획됨 IMGUI에서 GUI.matrix를 사용하여 3D UI를 생성하는 것은 기술적으로 가능하지만, 권장하지는 않습니다.
커스텀 머티리얼 및 셰이더 계획됨
셰이더 그래프 통합 계획됨
SVG 통합 계획됨
안티앨리어싱 계획됨

애니메이션

기능 UI 툴킷 IMGUI 참고:
트위닝 워크플로 실험 기능
애니메이션 클립 및 타임라인과의 통합 계획됨

커스터마이즈 가능성

기능 UI 툴킷 IMGUI 참고:
오픈소스/커스터마이즈 가능 계획됨 UI 툴킷 패키지(현재 프리뷰 단계)는 커스터마이즈가 가능합니다.

사용자 인터페이스(UI) 생성
UI 툴킷