tvOS는 iOS를 기반으로 빌드하지만 tvOS 입력으로 작동하도록 콘텐츠를 조정하고 더 큰 화면에 표시하기 위해 콘텐츠를 조정하는 등 새로운 과제를 만듭니다.
다음의 두 가지 기본 입력이 tvOS에 제공됩니다.
Apple TV Remote(Siri Remote)는 기존의 메뉴 내비게이션 컨트롤러, 앱 컨트롤러, 자이로스코프, 가속도 센서, 터치 제스처 기기로 작동하는 다목적 입력 기기입니다. Unity는 Apple TV Remote 입력을 해당 Unity API로 라우팅하지만, 해당 입력에 대한 다른 처리는 수행하지 않습니다. Apple TV Remote의 특정 입력 기능을 활용하려면 애플리케이션의 입력 체계를 일부 조정해야 할 수 있습니다. 예를 들어, 애플리케이션에서 이를 하나의 아날로그 축과 추가 작업 버튼이 있는 기존 애플리케이션 컨트롤러로 처리하거나, 애플리케이션에서 가속 센서를 사용하여 스티어링과 같은 인터랙션을 수행할 수 있습니다. 앱을 tvOS로 포팅할 때 다양한 체계를 사용해 볼 수 있습니다.
Unity는 iOS 및 tvOS에 대해 표준화된 컨트롤러 지원인 MFi(Made For iOS)를 제공합니다. MFi 컨트롤러는 기본 입력 매핑을 제공하며, Edit > Project Settings > Input Manager에서 커스텀 동작 매핑을 설정할 수 있습니다. 자세한 내용은 게임 컨트롤러 입력 처리 및 게임 컨트롤러를 참조하십시오.
Apple TV 기기에는 무선 MFi 컨트롤러를 두 개 더 연결할 수 있어서 효과적으로 콘솔로 전환할 수 있습니다. 애플리케이션은 iOS MFi 컨트롤러와 동일한 방식으로 컨트롤러를 사용할 수 있으나 Apple TV 리모트만으로도 유용해야 합니다. 현재 tvOS 시스템에 추가할 수 있는 컨트롤러의 개수는 두 개로 제한합니다.
다음은 특정 TV 리모트 기능에 하는 방법에 대한 기술 세부사항입니다.
기능 | 설명 |
---|---|
터치 영역 | Input.touches(Touch.type은 Indirect로 설정되며 Unity GUI에 의해 무시됨)와 조이스틱 입력 API(Input.GetAxis(“Horizontal”) 등) 모두에 매핑됩니다. |
터치 영역 클릭 | 버튼 A에 매핑된 후 조이스틱 버튼 14에 매핑됩니다. |
Gyroscope | Input.gyro에 매핑됩니다. Input.gyro.attitude는 중력 벡터에서 파생되므로 중력 벡터와 평행한 축을 중심으로 회전하지 않습니다. Input.gyro.rotationRate도 마찬가지입니다. |
Acceleration |
Input.acceleration에 매핑됩니다. 참고: Input.acceleration은 자이로스코프 API에서 파생되며 불안정한 부분이 있을 수 있습니다. tvOS SDK에는 전용 가속 센서 API가 없습니다. |
일시정지/플레이 버튼 | 버튼 X에 매핑된 후 조이스틱 버튼 15에 매핑됩니다. |
메뉴 버튼 | 길게 누르면 tvOS 태스크 스위처를 호출합니다. 이 동작은 오버라이드할 수 없습니다. 짧게 탭하는 경우 앱에서 둘 중 하나의 방식으로 처리할 수 있습니다. a) UnityEngine.tvOS.Remote.allowExitToHome이 참인 경우 tvOS 시스템 홈 화면으로 돌아갑니다. b) 앱이 탭에 응답하도록 합니다(UnityEngine.tvOS.Remote.allowExitToHome이 거짓인 경우 일시정지 버튼/조이스틱 버튼 0에 매핑됨). 이는 기본 동작입니다. 현재 상태에 따라 앱이 a) 및 b)를 전환해야 합니다. - 사용자가 현재 상위 메뉴와 상호작용하는 경우 동작 a)를 활성화합니다. - 사용자가 실시간으로 앱과 상호작용하는 경우 동작 b)를 활성화하고 사용자가 이 버튼을 누를 때 앱 내 일시정지 메뉴를 호출합니다. |
리모트 가장자리 스와이프 | 방향 패드(D-패드) 위/아래/왼쪽/오른쪽 버튼 누름을 생성합니다. 매핑 목록은 게임 컨트롤러 입력 매핑을 참조하십시오. |
다음과 같이 전용 API를 통해 Apple TV 리모트 작동 모드를 컨트롤할 수 있습니다.
참고: UnityEngine.tvOS.Remote.allowExitToHome이 거짓인 경우 메뉴 버튼은 조이스틱 버튼 0에 매핑됩니다. 이 경우 Submit 가상 버튼을 매핑하는 데 조이스틱 버튼 0도 사용되기 때문에 기본 Input 창과 충돌이 발생하게 됩니다. 이로 인해 UI 요소에서 메뉴 버튼이 동작을 트리거하게 됩니다. 이 문제를 해결하려면 Input 창(메뉴: Edit > Project Settings로 이동한 다음 Input 카테고리 선택)에서 Submit 가상 버튼 바인딩을 제거하거나 수정합니다.