모든 폼 팩터에서 멋진 Unity 게임 만들기

경쟁이 치열한 오늘날의 게임 시장에서는 최대한 광범위한 잠재고객에게 도달하는 것이 그 어느 때보다 중요합니다. 스마트폰, 태블릿, 폴더블, 데스크톱과 같은 다양한 폼 팩터를 위한 게임을 개발하면 더 큰 잠재적 플레이어 풀을 활용하여 성공 가능성을 높일 수 있습니다.

화면 크기 조절 가능 지원

다양한 폼 팩터를 지원하려면 게임의 크기를 조절할 수 있어야 합니다. 크기 조절 기능을 사용하면 게임에서 세로 모드 방향과 가로 모드 방향, 멀티 윈도우 모드, 폴더블 기기의 접힌 상태와 펼쳐진 상태와 같은 기기 구성을 지원할 수 있습니다.

게임이 모든 창 크기 및 방향 구성을 지원하지 않는 경우 플랫폼은 게임을 호환성 모드로 레터박스 처리하고 필요한 경우 지원되지 않는 구성으로 변경하기 전에 플레이어에게 메시지를 표시합니다.

그림 1. 구성 호환성 대화상자

자세한 내용은 대형 화면 크기 조절 지원을 참고하세요.

멀티 윈도우 모드

그림 2. 데스크톱의 다양한 UI와 탁자 상태의 폴더블

멀티 윈도우 모드를 사용하면 여러 앱이 동일한 화면을 동시에 공유할 수 있습니다. 앱은 나란히 또는 상하로 배치될 수도 있고 (화면 분할 모드), 다른 앱에 오버레이된 작은 창에 하나의 앱이 될 수도 있고 (PIP 모드), 이동과 크기 조절이 가능한 별도의 창에 개별 앱이 있을 수 있습니다 (자유 형식 모드).

게임이 멀티 윈도우 모드에서 실행될 때 호환성 모드로 전환되지 않도록 하려면 Unity 빌드 설정에서 크기 조절 가능한 창 옵션을 사용 설정하여 게임이 크기 조절을 처리할 수 있다고 선언합니다.

그림 3. Android용 Unity의 해상도 및 프레젠테이션 설정

디스플레이 컷아웃

디스플레이 컷아웃은 일부 기기에서 디스플레이 표면으로 확장되는 영역입니다. 컷아웃은 기기 전면의 중요한 센서를 위한 공간을 제공하는 동시에 더 넓은 화면 환경을 제공합니다.

그림 4. 디스플레이 컷아웃

게임에 더 넓은 화면 환경을 제공하려면 안전 프레임을 인식하도록 게임을 구성합니다. Unity safeArea API를 쿼리하여 화면의 안전 영역을 픽셀 단위로 가져오고 그에 따라 게임 UI 및 UX를 조정합니다(특히 사용자가 상호작용할 수 있는 요소의 경우).

폴더블의 상태

폴더블 기기는 FLAT(완전히 열린 상태) 또는 HALF_OPENED(완전히 열린 상태와 완전히 닫힘 사이의 위치)와 같이 접힌 상태가 다양할 수 있습니다. 기기가 HALF_OPENED 상태이면 접는 방향에 따라 탁자 상태 (가로로 접은 상태)와 책 상태 (세로로 접는 상태)의 두 가지 상태가 가능합니다. 탁자 모드를 사용하여 플레이어의 몰입도와 참여도를 높입니다.

그림 5. 디스플레이의 세로 부분에 기본 뷰가 있고 가로 부분에는 컨트롤이 있는 탁자 상태의 게임

탁자 상태를 구현하려면 기본 Unity 활동을 확장한 다음 Jetpack WindowManager 레이아웃 라이브러리를 사용하여 게임에서 접힌 상태를 인식하도록 합니다.

Unity 샘플 프로젝트

Unity 샘플 프로젝트는 Unity 2D 데모 프로젝트 Lost Crypt를 기반으로 합니다. 샘플 프로젝트는 Unity에서 대형 화면 크기 조절을 지원하는 방법을 보여줍니다. 대형 화면 및 폴더블 기기를 지원하려면 Unity 빌드 옵션의 여러 부분을 변경해야 할 뿐 아니라 카메라 및 UI 캔버스의 레이아웃도 고려해야 합니다.

샘플 프로젝트를 지금 다운로드할 수 있습니다. 프로젝트에는 4가지 장면이 있습니다.

  • 원본: 크기 조절 가능한 기본 기능 지원
  • 앵커링: '원본' 장면과 동일하지만 다양한 가로세로 비율에 맞게 조정되고 디스플레이 컷아웃을 피합니다.
  • HingeAware: '앵커링' 장면과 동일하지만 탁자 상태를 지원합니다.
  • 기본 메뉴: 장면 시작으로 다른 장면으로 이동할 수 있으며 모든 기기 방향, 접기, 펼치기, 탁자 상태를 완전히 지원합니다.

Android용으로 빌드할 때는 모든 장면을 선택하고 '기본 메뉴' 장면을 시작 장면으로 설정합니다.

그림 6. '메인 메뉴' 장면을 사용하면 탁자 모드에서 다른 장면으로 이동할 수 있습니다.

크기 조절 가능한 창 지원으로 시작하기

Android 대형 화면 애플리케이션에 다양한 디스플레이 크기와 가로세로 비율 지원을 구현하여 게임 또는 애플리케이션이 다양한 기기에서 올바르게 표시되도록 합니다. Unity 빌드 설정에서 크기 조절 가능한 창 속성을 설정하여 게임의 크기를 조절하고 가로세로 비율을 변경할 수 있도록 합니다 ('멀티 윈도우 모드' 섹션 참고). 다양한 화면에 더 잘 맞도록 카메라와 캔버스의 가로세로 비율을 조정합니다. Build Settings(빌드 설정) 및 Plugins/Android/AndroidManifest.xml 파일에서 프로젝트 설정을 확인합니다. 프로젝트의 '원본' 장면에서 전체 화면 크기 조절이 가능한 기능을 사용해 보세요.

그림 7. '원본' 장면에서 크기 조절 가능한 창 기능을 지원합니다.

디스플레이 컷아웃을 처리하면서 전체 화면으로 몰입도를 높이세요

게임에서 전체 화면을 사용하여 게임플레이를 몰입감 있게 만들어 사용자 환경을 개선합니다. 게임 UI 앵커링 및 카메라 설정을 업데이트하여 화면 크기에 맞게 자동으로 조정합니다. 이렇게 하면 UI 요소가 화면 크기를 기준으로 위치를 유지할 수 있습니다.

'앵커링' 장면은 CameraAspectLock 스크립트를 사용하여 확장 활동을 통해 기기 구성 변경에 응답합니다 (Assets/Plugins/Android/LargeScreenPlayableActivity.java 참고). Unity의 safeArea APISafeZoneAPI 스크립트에 나와 있으며 이는 '앵커링' 장면 내의 SafeZone 객체에 결합됩니다.

폴더블 기기의 내부 및 외부 디스플레이에 표시된 게임 장면 전체 화면
그림 8. 디스플레이 컷아웃이 있는 '앵커링' 장면

폴더블 기기에 최적화

Unity 샘플 프로젝트의 마지막 장면인 'HingeAware'에는 Jetpack 라이브러리 API확장 활동 (Assets/Plugins/Android/LargeScreenPlayableActivity.java 참고)을 통해 대상 기기의 다양한 접힘 상태에 응답하는 ConfigurationManager 객체가 포함됩니다. 장면에서는 PanelOnFold 스크립트를 사용하여 기기의 접힘 상태에 따라 UI를 제어합니다. 예를 들어 기기가 탁자 모드로 조정되고 있을 때 하단 컨트롤러 패널을 표시합니다.

그림 9. 'HingeAware' 장면은 탁자 모드를 지원합니다.