Canvas란?
Canvas란 Unity의 Component로 모든 UI들의 UI 컨테이너로써 활용됨
UI Element를 생성하면 Canvas는 자동으로 생성되어짐
Canvas 게임오브젝트는 4개의 Component들을 가짐 (RectTransform, Canvas, Canvas Scaler, Graphic Raycaster)
- RectTransform은 World Canvas 모드일 경우 Canvas를 어느 위치에 둘지를 결정
- Canvas는 Rendering 순서와 UI element들의 표현을 관리
- Canvas Scaler는 서로 다른 해상도와 그래픽에서 UI를 어떻게 설정할지를 관리
단일 Canvas를 사용하는거 보단 나눠서 여러 Canvas를 사용하는게 낫다
예를 들어 Canvas에 있는 UI요소 중 하나라도 이미지가 교체되거나 바뀌면 전체 UI 요소들이 ReBuilt 된다 그러므로 움직이지 않는 정적인 UI와 Dynamic한 UI의 경우 따로 두는 것이 좋다
RenderMode
ScreenSpace - Overlay
default mode, Camera가 무엇을 보던 무엇을 rendering하던 항상 화면 위에 오버레이 된다
이 모드에서 많이 사용하는 것은 Game의 UI로 인벤토리 화면등에 쓰임
Screenspace-Overlay 를 사용한 UI는 조명, Particle, PostProcessing 전부다 효과를 받지 않게 된다
만약 Particle이나 다른 Effect들을 UI에 넣고 싶다면 Screenspace-Camera 모드를 사용해야 함
ScreenSpace - Camera
Canvas는 항상 Camera의 Viewport 안에서 Rendering 됨 그러므로 Camera를 움직이게 되면 Canvas도 같이 움직임
그러므로 Scene에 있는 구성요소 뒤쪽으로 Rendering 될수도 있음
PostProcessing이나 Particle 등의 효과도 적용됨
WorldSpace
UI를 Scene안에 있는 GameObject인 것처럼 Rendering
RenderingMode를 WorldSpace로 바꾸고 사이즈를 줄이다보면 안에 구성 요소(Text 등이) 너무 커져 있을때가 있는데 WorldSpace 사용시엔 Canvas의 scale 값을 0.01로 줄여서 사용하는게 그래서 좋음
'Unity' 카테고리의 다른 글
[Unity] NavMesh Surface Bake를 했는데 Scene View에서 파란색 표면이 보이지 않는 이슈 (6) | 2024.12.11 |
---|---|
[Unity] 특정 게임오브젝트 기준으로 카메라 움직이기 (2) | 2024.11.29 |
Unity New InputSystem 사용방법 (0) | 2024.11.22 |
Unity Vector3.Lerp 선형보간으로 부드럽게 움직이게 하기 (0) | 2024.11.12 |
Unity Animation Rigging - Two Bone IK Constraint 사용방법 (12) | 2024.11.11 |