Unity는 UI 툴킷이 새로운 UI 개발 프로젝트를 위한 권장 UI 시스템이 되길 원하지만, Unity UI(uGUI) 및 IMGUI에 있는 몇 가지 기능이 아직 제공되지 않습니다. 이러한 예전 시스템은 특정 사용 사례에 더 적합하며, 레거시 프로젝트를 지원하는 데 필요합니다.
이 페이지에서는 UI 툴킷, Unity UI 및 IMGUI의 간략한 기능 비교와 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 개발에 사용되는 UI 툴킷과 Unity UI(TextMesh Pro 패키지 포함)를 비교합니다.
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 툴킷은 동일한 레이아웃 가능성을 제공하지만, 레이아웃 시스템은 매우 다릅니다.
기능 | UI 툴킷 | UGUI+TMP | 참고: |
---|---|---|---|
수동 레이아웃(부모에 대해 상대적 또는 절대적) | ✔ | ✔ | |
1차원(수평 및 수직) | ✔ | ✔ | |
2차원(그리드) | 연구 | ✔ | Unity UI는 GridLayoutGroup 컴포넌트를 제공합니다. UI 툴킷의 경우 Unity는 USS에서 CSS 스타일의 그리드를 구현하기 위한 방안을 조사 중입니다. |
기능 | UI 툴킷 | UGUI+TMP | 참고: |
---|---|---|---|
Unity의 새로운 입력 시스템과의 통합 | 계획됨 | ✔ | |
직렬화된 이벤트 | 계획됨 | ✔ | UI 툴킷은 C#의 요소에만 이벤트를 바인딩할 수 있습니다. Unity UI는 이벤트 바인딩을 직렬화할 수 있습니다. |
이벤트에 대한 시각적 스크립팅 | 연구 | ❌ |
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-Camera 및 World Space 렌더링 모드는 안티앨리어싱을 적용하는 카메라를 사용합니다. |
2D 회전(오브젝트가 UI 평면에 남아 있음) | ✔ | ✔ | |
3D 회전 | 계획됨 | ✔ | |
직사각형 클리핑 | 부분적 | ✔ | UI 툴킷은 회전 없는 직사각형 클리핑을 지원합니다. 직사각형은 축에 정렬되어야 합니다. |
마스크 클리핑 | 부분적 | ✔ | UI 툴킷은 2D 회전이 있는 마스크 클리핑을 지원합니다. Unity UI는 3D 마스크 회전을 지원합니다. |
중첩 마스킹 | 부분적/계획됨 | ✔ | UI 툴킷의 중첩 마스킹은 한 개의 레벨로 제한되지만, 드로우 콜 배칭에는 영향을 미치지 않습니다. 멀티 레벨 중첩 마스킹이 계획되어 있습니다. Unity UI는 최대 8개 레벨의 중첩 마스킹을 지원하지만, 두 개 레벨마다 드로우 콜 배칭을 중단시킵니다. |
기능 | UI 툴킷 | UGUI+TMP | 참고: |
---|---|---|---|
트위닝 워크플로 | 실험 기능 | 부분적 | |
애니메이션 클립 및 타임라인과의 통합 | 계획됨 | ✔ |
기능 | UI 툴킷 | UGUI+TMP | 참고 |
---|---|---|---|
오픈소스/커스터마이즈 가능 | 계획됨 | ✔ | UI 툴킷 패키지(현재 프리뷰 단계)는 커스터마이즈가 가능합니다. |
이 섹션에서는 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는 동일한 레이아웃 가능성을 제공하지만, 레이아웃 시스템은 매우 다릅니다.
기능 | UI 툴킷 | IMGUI | 참고: |
---|---|---|---|
수동 레이아웃(부모에 대해 상대적 또는 절대적) | ✔ | ✔ | |
1차원(수평 및 수직) | ✔ | ✔ | |
2차원(그리드) | 연구 중 | ❌ | UI 툴킷의 경우 Unity는 USS에서 CSS 스타일의 그리드를 구현하기 위한 방안을 조사 중입니다. |
기능 | UI 툴킷 | IMGUI | 참고: |
---|---|---|---|
Unity의 새로운 입력 시스템과의 통합 | 계획됨 | ❌ | |
직렬화된 이벤트 | 계획됨 | ❌ | |
이벤트에 대한 시각적 스크립팅 | 연구 | ❌ |
기능 | UI 툴킷 | IMGUI | 참고: |
---|---|---|---|
빌트인 렌더 파이프라인 지원 | ✔ | ✔ | |
유니버설 렌더 파이프라인(URP) 지원 | ✔ | ✔ | |
고해상도 렌더 파이프라인(HDRP) 지원 | ✔ | ✔ | |
스크린 공간(2D) 렌더링 | ✔ | ✔ | |
월드 공간(3D) 렌더링 | 계획됨 | ❌ | IMGUI에서 GUI.matrix 를 사용하여 3D UI를 생성하는 것은 기술적으로 가능하지만, 권장하지는 않습니다. |
커스텀 머티리얼 및 셰이더 | 계획됨 | ❌ | |
셰이더 그래프 통합 | 계획됨 | ❌ | |
SVG 통합 | 계획됨 | ❌ | |
안티앨리어싱 | 계획됨 | ❌ |
기능 | UI 툴킷 | IMGUI | 참고: |
---|---|---|---|
트위닝 워크플로 | 실험 기능 | ❌ | |
애니메이션 클립 및 타임라인과의 통합 | 계획됨 | ❌ |
기능 | UI 툴킷 | IMGUI | 참고: |
---|---|---|---|
오픈소스/커스터마이즈 가능 | 계획됨 | UI 툴킷 패키지(현재 프리뷰 단계)는 커스터마이즈가 가능합니다. |