Version: 2021.2
言語: 日本語
tvOS
tvOS ビルド設定

tvOS ビルドの注意点

このマニュアルページは、デベロッパーが iOS から tvOS に移行することを主な目的としています。tvOS として知られる Apple TV プラットフォームは、iOS プラットフォームの基礎の上に構築されていますが、アプリケーション開発者にとっては新たな課題も生まれています。既存の iOS アプリケーションを tvOS 上に展開するのは簡単にできますが、多くの場合、アプリケーションのコンテンツを tvOS の入力コントロールで動作したり、大画面で正しく表示できるように調整する必要があります。

要件

tvOS 向けの開発には、以下が必要です。

  • 第 4 世代の Apple TV デバイス (USB C - USB 3.0 ケーブルも必要です。これは、一般販売パッケージには含まれていません)。
  • Xcode 7.1 以降。
  • このデバイスに対して、iOS デバイスと同じ方法で プロビジョニング を設定します。プロビジョニングが正しく動作することをテストするために、Xcode で空の tvOS アプリケーションを作成します。

設定の注意点

アプリケーションの別のブランチまたはコピーを作成し、それを Apple TV にポートするのが最善の方法です。Apple TV は iOS フレームワークのサブセットしかサポートしていないため、多くの iOS プラグインには Apple TV との互換性がありません。サードパーティ製のプラグインとそのクロスプラットフォームの互換性に関して、Unity は制御できません。

アプリケーションがディスク上で 4GB 以上使用する場合は、小さなパーツに分割してオンデマンドリソースを使用してください。詳しくは、以下の オンデマンドリソース のセクションを参照してください。

ノート: bitcode は tvOS のビルドに含まれており、実行ファイルに約 130 MB を追加します。App Store のサーバーはこのコードを取り除きます。そのため、配布サイズには影響しません。bitcode のサイズを見積もるには、otool -l を使ったコマンドラインを通して、実行ファイルの LLVM セクションを分析してください。

入力の実装

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

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

Apple TV Remote (Siri Remote) は、従来のメニューナビゲーションコントローラー、アプリケーションコントローラー、ジャイロスコープ、加速度センサー、そして、タッチジェスチャーデバイスとして機能する多目的入力デバイスです。Unity は、Apple TV Remote の入力を対応する Unity API にルーティングしますが、その入力に対して他の処理は行いません。

Apple TV Remote の特定の入力機能を利用するためには、アプリケーションの入力スキームを調整する必要があります。例えば、アプリケーションはそれを、1 つのアナログ軸と追加のアクションボタンを備えた従来のアプリケーションコントローラーとして扱うことができます。また、アプリケーションはステアリングなどのインタラクションのために加速度計として使用することができます。tvOS にアプリケーションをポートする際には、さまざまな方式を試すことができます。

Unity では、iOS と tvOS 向けに標準化されたコントローラーサポートである Made For iOS (MFi) を提供しています。MFi コントローラーは、すぐに使える入力マッピングを提供しており、Unity エディターでカスタムアクションマッピングを設定することができます (メニュー: Edit > Project Settings… と移動し、Input カテゴリを選択)。詳細については、iOS Game Controller への対応 に関するドキュメントや、Apple 開発者ドキュメントの Game Controllers を参照してください。

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

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

Apple TV Remote のボタンや機能 ノート
タッチエリア Input.touches (Touch.type は Indirect に設定されており、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 にマップされます。
Menu ボタン 長押しすると、tvOS のタスクスイッチャーが呼び出されます。

アプリケーションは以下の 2 つの方法で短いタップを処理できます。

** a)** UnityEngine.tvOS.Remote.allowExitToHome が true の場合、tvOS システムのホーム画面に戻ります。
** b)** UnityEngine.tvOS.Remote.allowExitToHome が false の場合、タップ (一時停止ボタン/joystick button 0 にマップ) にアプリケーションが反応するようにします。

アプリケーションは、現在の状態に基づいて a) と b) を切り替える必要があります。

- ユーザーが現在トップメニューを操作している場合は、動作 a) を有効にします。
- ユーザーがリアルタイムでアプリケーションを操作している場合は、動作 b) を有効にし、ユーザーがこのボタンを押したときにアプリケーション内の一時停止メニューを呼び出します。
リモコンの端までスワイプ 方向パッド (D パッド) の上下左右のボタン押下を生成します。マッピングのリストについては、iOS Game Controller への対応 のドキュメントを参照してください。

専用の API を使って Apple TV Remote 操作モードを以下のように制御することができます。 * UnityEngine.tvOS.Remote.allowExitToHome * UnityEngine.tvOS.Remote.allowRemoteRotation * UnityEngine.tvOS.Remote.reportAbsoluteDpadValues * UnityEngine.tvOS.Remote.touchesEnabled

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

Unity UI からアプリケーションナビゲーションを設定

Apple Game Center のネイティブのリーダーボード UI には、カスタム視覚リソースを提供する必要があります。ここでは、Xcode でそれらを設定する方法を説明します。

  1. Unity エディターで Input ウィンドウを開きます。最初の Submit 仮想入力 (virtual input) を見つけてそれを開き、Alt Positive Button を joystick button 14 に変更します。
  2. シーンで EventSystem アプリケーションオブジェクトを選択します。Inspector で、EventSystem コンポーネントを見つけ、最初のフォーカスを受ける UI アプリケーションオブジェクトへの参照を First Selected プロパティに設定します。Standalone Input Module コンポーネントの Force input module プロパティを有効にする必要があるかもしれません。

ノート: アプリケーションが TV Simulator で実行されている間は、Apple TV Remote ナビゲーションは動作しません。

Xcode プロジェクトにリーダーボードを追加

Apple Game Center では、ネイティブのリーダーボード UI のカスタム視覚リソースを提供する必要があります。ここでは、Xcode でそれらを設定する方法を説明します。

  1. XCode プロジェクト を開きます。
  2. Images.xcassets を選択します。
  3. 列挙されたファイルの下で右クリックし、表示されたメニューから Game Center > New AppleTV Leaderboard を選択します。
  4. 画像を追加します。
  5. Leaderboard を選択し、右側のペインで Edit View を選択します。
  6. ** Identifier** フィールドにリーダーボード ID を入力します。

ヒント: この変更を行った後、アセットのコンパイルに失敗する場合は、Xcode のビルド設定で On Demand Resources オプションを無効にしてみてください。

オンデマンドリソースへの対応の実装

tvOS では、アプリケーションが確保できるディスク容量が制限されています。メインアプリケーションのインストールのバンドルサイズは 4 GB を超えることはできません。追加のダウンロードコンテンツの制限は、使用中のアセットは 2 GB まで、ダウンロード可能なコンテンツの合計は 20 GB までです。Apple は、tvOS のダウンロードコンテンツには、tvOS の最適なディスクスペース管理である ODR (オンデマンドリソース) を推奨しています。Unity では、Asset Bundle を通して ODR をサポートしています。ODR の実装に関する詳細は、Unity ブログ Appleプラットフォームのオンデマンドリソースを極める を参照してください。

既知の制限

  • オンスクリーンキーボードは単一行入力に限定されています。
  • tvOS Simulator は、Apple TV Remote をアプリケーションのコントローラーとしてエミュレートしないため、アプリケーションはその入力にアクセスできません。
tvOS
tvOS ビルド設定