Unity

[Unity] 캔버스 랜더모드(Canvas RenderMode)

CommitGuy 2024. 11. 22. 23:35

Canvas란?

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 - Overlay

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로 줄여서 사용하는게 그래서 좋음