Version: 2017.3
iOS 用ゲームの開発について
アカウントセットアップ

Unity の iOS サポート機能の基本

ここでは、iOS で作業する上で、もっとも頻繁に聞かれる重要な質問についてカバーします。

必要な要件

Apple から iPhone Developer の承認は得られましたが、iOS 開発は初めてです。最初は何から始めたらよいのでしょうか。

回答: SDK をダウンロードして、Apple Developer サイトを開き、チーム、デバイス、プロビジョニングを設定します。開始するため iOS アカウント設定 で基本的な手順を紹介しています。

Unity でビルドしたゲームは iPhone シミュレータで実行できますか。

回答 : いいえ、しかし Unity iOS は最新の SDK を使用しているならば iPad シミュレータ向けにビルドはできます。しかしシミュレータそのものは、iOS からの入力のすべてをシミュレートできず、iPhone/iPad でのパフォーマンスを正しくエミュレートできないため、Unity でそれほど便利ではありません。Unity に入ってゲームプレイをテストするには、Unity Remote を使用して iPhone/iPad をリモコンとして使用すべきです。次に、パフォーマンスやゲームの最適化を行う準備が整ったら、iOS デバイスにパブリッシュします。

Unity 機能

タッチスクリーンや加速度計で作業するにはどうしたらよいですか。

回答 : Unity iOS をインストールした際のスクリプティングリファレンスのの中で、アプリをビルドするうえで必要なデバイス機能をフックするクラスを見つけることができます。詳細については システム入力のページ を参照してください。

既存のパーティクルシステムが iOS で非常に遅く実行されるようです。どうすればよいですか。

回答 : iOS のフィルレートは比較的遅いものです。もしパーティクルが画面の大きな割合を占めてマルチレイヤーつきであると、簡単なシェーダーでも iOS パフォーマンスに致命的です。推奨としては、パーティクルエフェクトをオフラインでテクスチャのセットに焼き込みをしてください。次に、ランタイムにおいて、1 - 2 パーティクルをしようしてアニメーションつきテクスチャで表示します。最小限のオーバードローにより比較的優れたエフェクトが得られます。

重い物理計算のあるゲームを作れますか。

回答 : iOS では物理計算は、たくさんの浮動小数点に対する計算の高速処理が必要であるため、高価です。可能ならばメッシュコライダーは完全に避けて、どうしても絶対に必要という場合のみ使用します。パフォーマンスを改善するために、Edit->Time->Fixed Delta Time を使用して低い固定のフレームレートを使用します。フレームレートの設定は 10 - 30 を推奨します。Rigidbody 補間を使用してスムーズな動作と低い物理計算のフレームレートを両立します。安定した完全に滑らかなフレームレートを得るには、iOS 上で実際に得られている平均的なフレームレートにあった、固定の deltaTime を選ぶことがベストです。1:1 かフレームレートの半分が推奨されます。例えば、30 fps が得られた場合、15 か 30 fps の固定フレームレートとなるようにすべきです( 0.033 か 0.066 )。

Unity iOS からフォトアルバム、ミュージックライブラリや、ネイティブ iPod プレイヤーにアクセスできますか。

回答 : はい - 自身で実装すればできます。Unity iPhone はネイティブプラグインシステムをサポートし、必要な機能を追加できます – フォトアルバム、ミュージックライブラリ、iPod プレイヤーや、 iOS SDK が公開しているその他の機能を含みます。ここまで列挙した機能をアクセスするにあたり、Unity iOS での Unity スクリプトを通じた API はありません。

UnityGUI 考慮事項

UnityGUI によりどのようなパフォーマンス影響がゲームにありますか。

回答 : UnityGUI は多くのコントロールが使用されているとき比較的高価です。理想的には UnityGUI の使用をゲームメニューやゲーム実行中においてはきわめて最小限の GUI コントロールに限定します。OnGUI() コールを含むスクリプトのあるすべてのオブジェクトは、追加の処理時間を要することに注意してください – たとえ OnGUI() が空であったとしてもです。GUI コントロールが使用されていない OnGUI() コールのあるスクリプトは無効化するのがベストです。これはスクリプトで enabled = false とマーキングすることで対応できます。

Unity GUI を使用するテクニックはありますか。

回答 : GUILayout はできるかぎり最小限に使用してください。ひとつの OnGUI() コールで GUILayout をまったく使用していない場合、すべての GUILayout を無効化するのに MonoBehaviour.useGUILayout = false; を使用できます。これにより GUI レンダリングパフォーマンスが倍増します。最後に、3D シーンにおける GUI 要素はできる限り最小限に使用してください。

iOS 用ゲームの開発について
アカウントセットアップ