Version: 2022.3
言語: 日本語
tvOS 用の開発
Unity UI からアプリケーションナビゲーションを設定

tvOS の入力デバイスのサポート

tvOS は iOS の基盤の上に構築されています。tvOS の入力に対応したコンテンツや、より大きなスクリーンでの表示など、新たな課題も生まれています。

tvOS の入力は大きく分けて 2 つあります。

  • Apple TV Remote (入力必須)
  • Made For iOS (MFi) コントローラー (任意)

Apple TV Remote

Apple TV Remote (Siri Remote) は、従来のメニューナビゲーションコントローラー、アプリケーションコントローラー、ジャイロスコープ、加速度センサー、タッチジェスチャーデバイスとして動作する多目的入力デバイスです。Unity は Apple TV Remote の入力を対応する Unity API にルーティングしますが、その入力に対して他の処理は行いません。Apple TV Remote の特定の入力機能を活用するために、アプリケーションの入力スキームに調整が必要な場合があります。例えば、アプリケーションはそれを 1 つのアナログ軸と追加のアクションボタンで、伝統的なアプリケーションコントローラーとして扱うことがでます。またはアプリケーションはステアリングのようなインタラクションのために加速度計を使用することができます。アプリケーションを tvOS に移植する際には、様々な方式を試すことができます。

Made for iOS (MFi)

Unity では、iOS と tvOS 向けに標準化されたコントローラーサポートである Made For iOS (MFi) を提供しています。MFi コントローラーは、すぐに使える入力マッピングを提供しており、Edit > Project Settings > Input Manager でカスタムアクションマッピングを設定することができます。詳細については、 ゲームコントローラー入力の処理ゲームコントローラ を参照してください。

Apple TV デバイスには、さらに 2 つのワイヤレス MFi コントローラーを接続することで、実質的にコンソールにすることができます。アプリケーションは iOS の MFi コントローラーと同じようにコントローラーを使うことができますが、Apple TV Remote だけで使い勝手を確保する必要があります。tvOSシステムでは、追加コントローラーの数は 2 つに制限されています。

ここでは、特定の TV Remote の機能にアクセスするための技術的な詳細を説明します。

機能 説明 
タッチエリア Input.touches (Touch.typeIndirect に設定され、Unity GUI から無視されます) と Joystick Input API ( 例えば、Input.GetAxis(“Horizontal”)) の両方にマップされます。
タッチエリアクリック A ボタンにマップされ、joystick button 14 にマップされます。
ジャイロスコープ Input.gyro にマップされます。Input.gyro.attitude は重力ベクトルから派生しているため、重力ベクトルに平行な軸を中心に回転しません。同じことが Input.gyro.rotationRate にも当てはまります。
加速度 Input.acceleration にマップされます。ノート: Input.acceleration はジャイロスコープ API から派生しており、不安定な部分があるかもしれません。tvOS SDK には、専用の加速度センサー API はありません。
一時停止/再生ボタン X ボタンにマップされ、joystick button 15 にマップされます。
メニューボタン 長押しすると、tvOS のタスクスイッチャーが呼び出されます。この動作をオーバーライドすることはできません。
アプリケーションは以下の 2 つのうちいずれかの方法で短いタップを処理できます。
a) UnityEngine.tvOS.Remote.allowExitToHome が true の場合、tvOS システムのホーム画面に戻ります。
b) UnityEngine.tvOS.Remote.allowExitToHome が false の場合、タップ (一時停止ボタン/joystick button 0 にマップ) にアプリケーションが反応するようにします。これはデフォルトの動作です。
アプリケーションは、現在の状態に基づいて a)b) を切り替える必要があります。
- ユーザーが現在トップメニューを操作している場合は、動作 a) を有効にします。
- ユーザーがリアルタイムでアプリケーションを操作している場合は、動作 b) を有効にし、ユーザーがこのボタンを押したときにアプリケーション内の一時停止メニューを呼び出します。
リモコンの端までスワイプ 方向パッド (D パッド) の上下左右のボタン押下を生成します。
マッピングのリストについては、ゲームコントローラーの入力マッピング を参照してください。

Apple TV remote の操作モードは、以下の専用の API から制御できます。

ノート: UnityEngine.tvOS.Remote.allowExitToHome が false の場合、Menu (メニュー) ボタンは joystick button 0 にマップされます。これにより、デフォルトの Input ウインドウと競合が発生します。なぜなら、Input ウィンドウも joystick button 0 を使って Submit (送信) 仮想ボタンにマップするためです。この結果、Menu ボタンが UI 要素のアクションを引き起こすことになります。この問題を解決するには、Input ウィンドウの Submit 仮想ボタンとの関連を削除または変更します (メニュー: Edit > Project Settings に移動し、Input カテゴリを選択)。

tvOS 用の開発
Unity UI からアプリケーションナビゲーションを設定