⭐ UGUI
● Unity에서 제공하는 컴포넌트 기반 UI 시스템
● 기존의 IMGUI(Immediate Mode GUI)를 대체
○ 코드 중심(IMGUI)에서 시각적 구성(UGUI) 중심으로 발전
UGUI의 특징
| 항목 | 특징 |
| 구조 | Hierachy 기반 UI 트리 구조 |
| 편집 | Scene 뷰에서 직접 배치/크기 조절 가능 |
| 렌더링 | Canvas를 통해 화면에 출력 |
| 입력 | EventSystem을 통해 클릭, 터치 등 이벤트 감지 |
| 확장성 | Script와 쉽게 연동 가능 |
UGUI를 구성하는 핵심 구성
1. Canvas
○UI를 그리는 영역이자 루트 오브젝트
○ 모든 UI는 반드시 Canvas의 자식으로 속해있어야 함
2. RectTransform
○ UI 전용 Transform
○ 일반 Transform과 달리 Anchor(앵커) / Pivot(피봇) 속성을 가짐
3. EventSystem
○입력등의 이벤트를 관리
○ 클릭, 드래그, 포커스, 터치 등 사용자 Interaction(인터랙션) 감지
* Interaction(인터랙션) - 사용자와 시스템 간의 소통방식
⭐ Canvas란?
● UI 렌더링의 기준이 되는 영역이며, 렌더 모드(Render Mode)에 따라 UI가 표시되는 방식이 달라집니다.

Canvas의 주요 컴포넌트 속성

● RectTransform
○ Anchor
■ 부모 오브젝트의 어디를 기점으로 위치할지를 정하는 기준점
○ Pivot
■ UI 자체의 회전, 확대, 이동의 기준점
○ AnchoredPosition
■ Anchor(앵커)를 기준으로 한 UI의 위치
○ SizeDelta
■ UI 크기 조정 값
● Render Mode - 어디서 어떻게 렌더링될지를 정하는 모드
○ Screen Space - Overlay
■ UI 요소가 화면위에 직접 렌더링되는 모드
■ 스크린의 크기나 해상도가 변경될 경우 캔버스의 크기도 자동으로 맞춰 변경됩니다.
○ Screen Space - Camera
■ UI 요소가 특정 카메라의 시야에 맞춰 렌더링되는 모드
■ 캔버스가 카메라의 지정된 거리 앞에 위치합니다.
■ 스크린의 크기나 해상도에 따라 캔버스의 크기가 자동으로 조절됩니다.
■ 해당 카메라의 Projection(투영방식), 거리, Fov(시야각)에 영향을 받습니다.
○ World Space
■ UI 요소가 3D 오브젝트처럼 실제 월드 공간에 존재하는 모드
■ UI는 실제 Transform을 가지며, 3D 오브젝트처럼 Collider, Physics등 적용 가능합니다.
■ 카메라 각도나 거리 변화에 따라 크기와 시야가 달라집니다.
● Canvas Scaler - 해상도 변화에 대응하기 위한 스케일 조정 속성
○ Constant Pixel Size
■ UI 요소가 화면의 크기나 해상도에 상관없이 픽셀 단위로 고정됨
○ Scale With Screen Size
■ UI 요소가 해상도에 따라 비율이 조정됨
○ Constant Physical Size
■ UI 요소가 화면의 크기나 해상도에 상관없이 물리적인 크기로 유지됨
Canvas의 리빌드(Rebuild)
● Canvas는 하위에 있는 모든 UI 요소를 하나로 묶어서 하나의 배치(Render Batch)로 처리
💡리빌드(Rebuild)의 의미와 주의할 점
● Canvas가 다시 그려져야 하는 상황을 뜻합니다.
○ UI의 위치, 크기, 색상, 텍스트 내용 등이 변경되면 Canvas 내부적으로 재계산을 수행
○ 리빌드 과정은 CPU 연산 비용이 크고, 자식 UI가 많을 수록 비용이 기하급수적으로 늘어남
● 각 Canvas는 독립적인 렌더링 단위로 작동합니다.
○ Unity는 각 Canvas 마다 배치 계산, 메쉬 갱신, 드로우콜(DrawCall) 발생
○ 즉 많은 양의 Canvas가 생산되는 행위도 주의해야함
* 드로우 콜: CPU가 GPU에게 렌더링 명령을 내리는 호출 단위
UI 관리 팁
| 항목 | 권장 사항 |
| EventSystem | 씬당 하나만 유지 |
| Prefab 활용 | 공통 UI 프리팹화 |
| LayoutGroup / ContentSizeFilter | 자동 정렬 UI에 사용 |
| Sorting Order | 여러 Canvas 사용 시 렌더 우선순위 설정 |
'개발, IT > 유니티' 카테고리의 다른 글
| [Unity] New Input System (인풋시스템) (0) | 2025.11.09 |
|---|---|
| [Unity] 유니티 Render Pipeline (렌더 파이프라인) 종류 (0) | 2025.11.04 |
| [Unity] UnityEvent(유니티 이벤트), UnityAction(유니티 액션) (0) | 2025.10.22 |
| [Unity] Coroutine (코루틴) (0) | 2025.10.20 |
| [Unity] 물리 충돌 이벤트 (OnTrigger / OnCollision (0) | 2025.10.20 |