UI를 다루면서 렌더링 순서에 대한 문제와 RectTransform의 차이점을 명확하게
구분하고 싶어 정리된 글 입니다.
User Interface
사람과 기기, 시스템, 프로그램 사이에서 의사소통을 매개하는
화면 디자인 및 물리적인 요소를 의미한다.
Unity에서의 UI는 단순한 장식이 아니라 플레이어와 게임 로직을 연결하는 인터페이스 계층이다.
이 글에선 UGUI 기준의 설명이다.
유니티의 인스펙터 UI 탭에서 Button을 만들면 자동으로 Canvas와 EventSystem이 생긴다.
UGUI는 Canvas기반, EventSystem을 사용하는 구조이다.
Canvas는 UI의 세계 라고 생각하면 된다.
UI를 실제 화면에 그려주는 루트 컨테이너 즉 도화지 역할을 한다.
사용자 입력 및 이벤트 처리를 관리한다.
이벤트를 감지하고 해당 이벤트에 대한 콜백함수를 호출한다.
즉 UI를 통한 입력을 사용하고 싶다면 EventSystem이 필요하다.
- 화면 바로 위에 렌더링
- 카메라 필요 x
- 해상도 변경에 민감
- UI 최상단에 항상 표시
- 특정 카메라를 기준으로 렌더링
- UI도 카메라 영향을 받는다
- UI가 3D 오브젝트처럼 월드에 존재한다
- NPC 머리 위 체력바와 같은 UI에 사용
- RectTransform 이 실제 크기 개념을 가진다
- Scale 관리가 필요하다
Canvas Scaler는 해상도에 따라 UI크기를 어떻게 보정할지 결정한다.
UI Scale Mode 주요 옵션으로는 세가지가 있다.
- ConsTant Pixel Size
- Scale With Screen Size
- Constant Physical Size
대부분 Scale With Screen Size를 사용한다.
해상도가 달라도, UI의 상대적 비율을 유지하기 위해서이다.
UI는 Transform이 아니라 RectTransform을 사용한다.
UI는 좌표로 배치하는 것이 아니라 부모 영역 기준으로 배치된다.
RectTransform 의 특징은
1. 사각영역을 사용
2. Anchored Position
3. Width / Height
4. 앵커 기준으로 재계산
UI는 카메라에 찍히는 오브젝트가 아니다.
Canvas가 UI를 하나의 렌더링 단위로 관리 한다.
렌더링의 과정에서 Objcet와 달리 Z값, Sorting Layer만으로 해결 되지 않고
- Canvas
- Hierarchy 순서
- Canvas 설정
이와 같은 요소들이 중요해진다.
RectTransform 과 Anchor를 제대로 이해하고 구체적으로 정리해보겠다.