UI는 User Interface의 줄인말로 사용자들이 해당 어플리케이션, 프로그램을 사용하기 편하도록 디자인한 것입니다. 게임에선 화면에 있는 버튼 등을 뜻합니다. Unity에서 Hierarchy창에서 우클릭 후 UI를 가져올 수 있습니다.
위처럼 UI - Image를 생성하면 뜬금없이 Canvas가 등장하고 자식으로 해당 오브젝트가 생성되는 것을 확인할 수 있습니다. UI는 어떤 모니터, 장면에서든 특정 위치, 특정 크기를 유지해야하는데 이를 위해 필요한 기능입니다. 과거 카메라 특성 설명 때 절두체(Frustum)을 다룰 때 Near, Far Plane이란 개념이 있었습니다. Canvas는 Far Plane으로써의 기능입니다. Far Plane은 카메라가 최대로 표현할 수 있는 사각면입니다. 그렇다면 우린 어째서 UI를 표현할 때 Canvas를 사용해야할까요? 밑의 그림을 보겠습니다.
1번 시작버튼은 일반 World 내의 Scene에서 그냥 버튼용 GameObject를 생성한 것이고, 2번은 UI를 통해 Canvas에 나타낸 방식입니다. 우리는 게임을 하면서 World 좌표상 이동,시점 변환 등을 하게 됩니다. 이렇게 되면 1번 버튼 자체가 카메라에 들어가지않아 게임에 표현되지않습니다. 하지만 Canvas는 카메라 최대 거리에 붙은 면이기 때문에 어떻게 움직이든 회전하든 게임에 같은 위치에 고정되어 표현됩니다. 이를 잘 이해하는 것이 중요합니다.
Canvas의 세부 설정에 대해 다뤄보겠습니다. Render Mode는 렌더링 모드를 3가지 중 하나로 설정할 수 있습니다.
- Screen Space - Overlay: UI요소가 화면에서 Scene의 위에 렌더링됩니다. 스크린의 크기가 조절되거나 해상도가 변경되면 캔버스는 여기에 맞춰 자동으로 크기를 변경합니다.
- Screen Space - Camera: UI의 렌더링을 월드 기준이 아닌 카메라를 기준으로 진행합니다. 또한 카메라의 절두체 변경에 따라 크기와 같은 속성이 변경됩니다.
- World Space: 이는 UI 요소들이 Scene에 있는 다른 gameObject처럼 동작합니다. 캔버스의 크기를 사각 트랜스폼을 사용하여 수동으로 조절할 수 있고 UI요소는 3D배치에 기반하여 Scene의 다른 오브젝트 앞, 뒤에 렌더링됩니다. 이 방식은 서사적 인터페이스라고도 표현합니다.
Canvas Scaler는 캔버스의 크기를 다루는데 자체의 크기를 조절한다기보단 해상도가 바뀌었을 때 UI가 따라 커지는 등을 다룰 때 사용합니다.
- Constant Pixel Size: 픽셀 사이즈를 기준으로 크기를 조절합니다.
- Scale With Screen Size: 해상도 사이즈에 따라 UI요소들의 크기를 조절합니다.
- Constant Physical Size: 물리적 사이즈를 기준으로 크기를 조절합니다.
이는 UI요소 Inspector창 내의 기능, Rect Transform 중 앵커 프리셋(Anchor Presets) 기능입니다. UI요소를 Screen의 어느 위치에 보내주는 기능을 가지고 있습니다. 여기서 Shift, Alt키를 누른 상태로 선택하면 추가 기능이 부여됩니다.
- Shift: pivot값을 지정해줍니다.
- Alt: position값을 지정해줍니다.
위의 기능을 사용하면 해당 UI의 위치를 Canvas 어느 곳에 위치시킬지를 지정할 수 있습니다.
'유니티(Unity) 프로그래밍' 카테고리의 다른 글
UI-Text, Font, Button (0) | 2024.10.22 |
---|---|
UI - Sprite, Image 통해 HP 게이지 표현하기 (0) | 2024.10.21 |
코루틴 (Coroutine)을 통한 Picking (5) | 2024.10.03 |
Unity 카메라 (1) | 2024.09.29 |
Unity Prefabs과 Stack, Queue (1) | 2024.09.26 |