[Unity] Canvas Render Mode

niireymik·2024년 11월 14일

3D 프로젝트에서 생성한 캔버스 컴포넌트의 인스펙터 창에서 RenderMode를 다음의 셋 중 하나로 설정할 수 있다.

  1. Screen Space - Overlay
  2. Screen Space - Camera
  3. World Space



1. Screen Space - Overlay

[예시] 배틀그라운드 모바일. 어떤 3D 오브젝트가 있든 항상 그 위에 존재하는 지도나 버튼들이 overlay방식으로 존재하는 캔버스라고 이해하면 편하겠다! :)

캔버스가 Scene 내부의 어느 곳에 위치하더라도, 게임 Scene 전체를 덮는 형식으로 렌더링된다.

*렌더링(Rendering) : 3차원 공간에 물체를 표현함

캔버스가 화면에 맞게 스케일된 후 카메라의 레퍼런스 없이 직접 렌더링된다. 이때 Scene에 카메라가 아예 없더라도, UI가 렌더링된다.

스크린의 크기가 조절되거나 해상도가 변경되면 캔버스는 이에 맞춰 자동으로 크기를 변경한다 !

⚠️ 주의 : Screen Space - Overlay 캔버스는 계층구조의 최상위 레벨에 저장되어야 한다. 최상위 레벨이 아닐 시 UI가 사라질 수도 있음에 유의하자!




2. Screen Space - Camera

[예시] 화면처럼 3D 오브젝트를 캔버스 위에 (카메라와 더 가까이) 위치하면, 3D 오브젝트가 캔버스를 가린다.

camera 방식은 말 그대로 카메라를 지정한다.
따라서 카메라를 기준으로 일정 거리에 위치한 평면 오브젝트 위에 다른 요소들이 올라가는 것처럼 렌더링된다.

UI의 화면 크기는 카메라 절두체 내에 정확히 맞도록 항상 다시 스케일되기 때문에 거리에 따라 크기가 달라지지는 않는다.

스크린의 크기나 해상도 또는 카메라 절두체가 변경되면 UI도 자동으로 다시 스케일하여 맞춘다. (이렇게 환경이 바뀌더라도 자동 스케일된다는 점에서 overlay방식과 비슷하다.)

Scene 안의 3D 오브젝트 중 UI 평면보다 카메라에 가까운 모든 오브젝트는 UI 앞에 렌더링되고, UI 평면 뒤의 오브젝트는 가려진다.




3. World Space

[예시]

world space 모드에서는 UI가 씬 안에 있는 평면 오브젝트인 것처럼 렌더링한다.
그러나 camera 모드와는 달리, UI가 항상 카메라를 향하지 않는다.

캔버스의 크기는 사각 트랜스폼을 통해 설정할 수 있지만, 화면에서의 캔버스 크기는 카메라의 뷰 각도와 카메라의 거리에 따라 달라진다.

0개의 댓글