이 매뉴얼 페이지는 개발자들이 iOS에서 tvOS로 쉽게 전환하도록 도움을 주기 위해 작성되었습니다. tvOS라고도 불리는 Apple TV 플랫폼은 iOS 플랫폼을 기반으로 구축되지만, 앱 개발자에게 새로운 과제를 선사합니다. 기존 iOS 앱을 tvOS에 쉽게 배포할 수 있지만, tvOS 입력 컨트롤을 통해 작동되고 큰 화면에 올바르게 표시되도록 앱 콘텐츠를 조정해야 할 때가 종종 있습니다.
tvOS용 개발을 위해서는 다음이 필요합니다.
앱의 별도 브랜치 또는 복사본을 만들어 Apple TV에 이식하는 것이 좋습니다. Apple TV는 일부 iOS 프레임워크만 지원하므로 대부분의 iOS 플러그인이 Apple TV와 호환되지 않습니다. Unity는 타사 플러그인과 크로스 플랫폼 호환성을 제어할 수 없습니다.
앱이 디스크에서 4GB 이상을 사용하는 경우 더 작은 부분으로 나누고 온디맨드 리소스를 사용하십시오. 자세한 내용은 아래의 온디맨드 리소스 섹션을 참조하시기 바랍니다.
참고: Bitcode는 tvOS 빌드에 포함되어 있으며 실행 파일에 약 130MB를 추가합니다. App Store 서버는 이 코드를 제거하므로 배포 크기에 영향을 미치지 않습니다. Bitcode 크기를 추산하려면 커맨드 라인에서 otool -l
을 통해 실행 파일의 LLVM 섹션을 분석하십시오.
다음의 두 가지 기본 입력이 tvOS에 제공됩니다.
Apple TV 리모트(Siri 리모트)는 전통적인 메뉴 내비게이션 컨트롤러, 앱 컨트롤러, 자이로스코프 및 가속도 센서, 터치 제스처 기기로 사용되는 다목적 입력 기기입니다. Unity는 Apple TV 리모트 입력을 해당 Unity API로 라우팅하지만, 해당 입력에 대해 다른 처리 작업은 수행하지 않습니다.
Apple TV 리모트의 특정 입력 기능을 사용하기 위해 해당 입력 체계에 맞게 앱을 조정해야 할 수 있습니다. 예를 들어 앱은 기존 앱 컨트롤러로 취급(하나의 아날로그 축과 추가 동작 버튼을 사용)하거나, 조종과 같은 상호작용에 가속 센서를 사용할 수 있습니다. 앱을 tvOS로 이식할 때 다양한 체계로 실험할 수 있습니다.
Unity는 iOS 및 tvOS에 대한 표준화된 컨트롤러 지원인 Made For iOS (MFi)를 제공합니다. MFi 컨트롤러는 즉시 사용할 수 있는 입력 매핑을 제공하며, Unity 에디터(메뉴: Edit > Project Settings… 에서 Input 카테고리 선택)에서 커스텀 동작 매핑을 설정할 수 있습니다. 자세한 내용은 iOS 게임 컨트롤러 지원 문서와 게임 컨트롤러에 대한 Apple 개발자 문서를 참조하십시오.
두 개의 추가 무선 Made For iOS (MFi) 앱 컨트롤러를 Apple TV 기기에 연결하여 실질적인 콘솔로 바꿀 수 있습니다. 앱은 iOS MFi 컨트롤러와 동일한 방식으로 컨트롤러를 사용하지만, Apple TV 리모트 단독으로도 사용할 수 있는지 확인해야 합니다. tvOS 시스템은 추가 컨트롤러의 수를 두 개로 제한합니다.
다음은 특정 TV 리모트 기능에 하는 방법에 대한 기술 세부사항입니다.
Apple TV 리모트 버튼 또는 기능 | 참고 |
---|---|
터치 영역 |
Input.touches (Touch.type 은 Indirect 로 설정되며 Unity GUI에 의해 무시됨)와 조이스틱 입력 API(Input.GetAxis("Horizontal"); 등) 모두에 매핑됩니다. |
터치 영역 클릭 | 버튼 A에 매핑된 후 조이스틱 버튼14에 매핑됩니다. |
자이로스코프 |
Input.gyro 에 매핑됩니다. Input.gyro.attitude 는 중력 벡터에서 파생되므로 중력 벡터와 평행하게 축 주위를 회전하지 않습니다. 이는 Input.gyro.rotationRate 에도 동일하게 적용됩니다. |
가속도 |
Input.acceleration 에 매핑됩니다. 참고: Input.acceleration 은 자이로스코프 API에서 파생되며, 다소 불안정할 수 있습니다. tvOS SDK에는 전용 가속 센서 API가 없습니다. |
일지정지/재생 버튼 | 버튼 X에 매핑된 후 조이스틱 버튼15에 매핑됩니다. |
메뉴 버튼 | 길게 누르면 tvOS 작업 전환기가 호출되며, 이 동작은 오버라이드할 수 없습니다. 앱은 다음 두 가지 중 한 가지 방식으로 짧은 탭을 처리할 수 있습니다. a) UnityEngine.tvOS.Remote.allowExitToHome 이 true이면 tvOS 시스템 홈 화면으로 돌아옵니다.b) UnityEngine.tvOS.Remote.allowExitToHome 이 false이면 앱이 탭에 응답하도록 둡니다(일시정지 버튼/조이스틱 버튼 0에 매핑됨). 기본 동작입니다.앱이 현재 상태에 따라 a) 및 b) 간에 전환해야 합니다. - 사용자가 현재 상위 메뉴와 상호작용 중이면 동작 a) 를 활성화합니다. - 앱과 실시간으로 상호작용 중이면 이 버튼을 누를 때 동작 b) 를 활성화하고 인앱 일시정지 메뉴를 호출합니다. |
리모트 모서리로 스와이프 | 방향 패드(D패드) 위쪽/아래쪽/왼쪽/오른쪽 버튼 누름을 생성합니다. 매핑 리스트는 iOS 게임 컨트롤러 지원 문서를 참조하십시오. |
다음의 전용 API를 통해 Apple TV 리모트 작동 모드를 제어할 수 있습니다.
* UnityEngine.tvOS.Remote.allowExitToHome
* UnityEngine.tvOS.Remote.allowRemoteRotation
* UnityEngine.tvOS.Remote.reportAbsoluteDpadValues
* UnityEngine.tvOS.Remote.touchesEnabled
참고: UnityEngine.Apple.TV.Remote.allowExitToHome
이 false이면 Menu 버튼이 조이스틱 버튼 0으로 매핑됩니다. 이 경우 조이스틱 버튼 0을 사용하여 Submit 가상 버튼을 매핑하는 입력 창과 충돌이 발생할 수 있습니다. 그 결과 Menu 버튼이 UI 요소에 대한 동작을 트리거할 수 있습니다. 이 문제를 해결하려면 입력 창(메뉴: Edit > Project Settings 에서 Input 카테고리 선택)에서 Submit 가상 버튼 바인딩을 제거하거나 수정하십시오.
네이티브 리더보드 UI에 대한 커스텀 가상 리소스를 Apple Game Center에 제공해야 합니다. Xcode로 설정하는 방법은 다음과 같습니다.
참고: Apple TV 리모트 내비게이션은 앱이 TV 시뮬레이터에서 실행 중일 때는 동작하지 않습니다.
Apple Game Center는 네이티브 리더보드 UI에 대한 커스텀 가상 리소스를 제공하도록 요구합니다. Xcode로 설정하는 방법은 다음과 같습니다.
팁: 이러한 변경 후 에셋 컴파일이 실패하면 Xcode 빌드 설정에서 On Demand Resources 옵션을 비활성화하십시오.
tvOS는 애플리케이션이 확보할 수 있는 디스크 공간 양을 제한합니다. 메인 애플리케이션 설치 번들 크기는 4GB보다 크면 안 됩니다. 그러나 추가 다운로드 가능 콘텐츠에 대한 제한의 경우 사용 중 에셋은 최대 2GB, 그리고 총 다운로드 가능 콘텐츠는 최대 20GB입니다. Apple은 tvOS 다운로드 가능 콘텐츠에 대해 온디맨드 리소스(ODR) 사용을 권장하며, 이렇게 하면 tvOS에서 디스크 공간을 효율적으로 관리할 수 있습니다. Unity는 에셋 번들을 통해 ODR을 지원합니다. ODR 구현에 대한 자세한 내용은 Unity 블로그 Apple 플랫폼용 온디맨드 리소스 마스터를 참조하십시오.