Unity에서 UI 요소들을 배치하고 렌더링하려면, 반드시 Canvas 하위에 위치시켜야 한다. Canvas가 UI object들을 화면에 배치하고 렌더링하기 때문이다.
참고로 위 사진과 같이 Canvas를 생성하면 EventSystem 객체가 자동으로 같이 생성되는데, 이 EventSystem 객체는 UI 항목의 입력을 관장한다. 따라서 이 자동으로 생성된 EventSystem 객체를 함부로 삭제해서는 안 된다!
Canvas Component - Render Mode
캔버스를 생성하면 Inspector 창에서 render mode 라는 속성을 발견할 수 있다. 해당 속성을 어떻게 설정하느냐에 따라 화면에 UI 요소들을 배치하는 방법이 결정된다.
1. Screen Space - Overlay
: 가장 기본적인 방법. Canvas를 생성하면 기본적으로 설정된다. UI를 Scene 내 모든 오브젝트들 중 최상위 계층에 표시하고, 화면 해상도에 맞춰 자동으로 스케일링된다.
2. Screen Space - Camera
: Overlay 방식과 근본적으로 동일하나, UI를 비추는 카메라를 따로 지정한다.
Canvas의 Render Mode를 Screen Space - Camera로 하고, UI를 비추는 카메라로 따로 UICamera라는 Camera object를 새로 만들어 지정하면,
이렇게, 일반 Scene을 비추는 카메라(Main Camera)와 UI만 따로 비추는 카메라(UICamera)를 따로 지정할 수 있다. 단, 두 카메라가 잘 조화될 수 있도록 경우에 따라 여러 설정을 만져줘야 할 수 있다.
3. Screen Space - World Space
이 방식을 채택하면 이제 canvas가 일반 게임오브젝트처럼 취급받는다. 이제 더 이상 Rect Transform에 영향받는, gameObject들과 다른 계층에 있는 것처럼 취급받지 않고 일반 gameObject들처럼 물리적 위치를 변경할 수 있다.
Canvas의 Render Mode를 World Space로 설정하고, 해당 Canvas를 게임오브젝트(Sphere)의 자식 오브젝트로 만들었다. 이제 저 Sphere를 움직이면 UI Object도 부모 오브젝트를 따라 열심히 따라서 움직인다.
'게임개발 > Unity' 카테고리의 다른 글
[Unity] JSON 이용하여 데이터 저장하기 (0) | 2024.08.28 |
---|---|
[Unity] GameObject의 이동(기본) (0) | 2024.06.10 |
[Unity] ScriptableObject (0) | 2024.06.09 |
[Unity] 게임오브젝트의 회전 (1) | 2024.06.08 |
[Unity] Unity Event (0) | 2024.06.07 |