Version: 2020.3
言語: 日本語
iOS 用ゲームの開発について
iOS アカウント設定

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

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

必要な要件

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

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

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

回答: 可能ですが、特定の状況でのみです。 シミュレーターで Metal サポートを有効にするには、XCode11 と macOS10.15 を使用する必要があります。ただし、シミュレーター自体は、iOS からのすべての入力をシミュレートしたり、iPhone/iPad で得られるパフォーマンスを適切にエミュレーションしたりしないため、Unity にはあまり役に立ちません。 Unity Remote アプリケーションを実行して iPhone/iPad をリモコンとして使用し、Unity 内で直接ゲームプレイをテストするとよいでしょう。それから、パフォーマンスをテストしてゲームを最適化する準備が整ったら、iOS デバイスにパブリッシュしてください。

Unity の機能

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

回答: Unity の iOS サポート機能のインストールに含まれるスクリプトリファレンスには、アプリケーションを構築するために必要な、デバイス機能へのフックを提供するクラスがあります。詳しくは [入力]](Input.html) を参照してください。

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

回答: iOS のフィルレートは比較的低いと言えます。パーティクルが画面の大部分を複数のレイヤーで覆うと、最も単純なシェーダーでも iOS のパフォーマンスが低下します。そのため、パーティクルのエフェクトを一連のテクスチャにオフラインでベイクすることをお勧めします。そして、ランタイムにアニメーションテクスチャを通して、1〜2 個のパーティクルシステムを表示します。このようにすれば、最小限のオーバードローで適当な結果を得ることができます。

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

回答: 物理計算は、浮動小数点数の計算を多く必要とするため、iOS では負荷が高くなります。可能であれば MeshCollider を完全に回避すべきですが、本当に必要な場合は使用できます。パフォーマンスを向上させるには、 Edit > Time > Fixed Delta Time で低い固定フレームレートを使用します。10〜30 のフレームレートが推奨されます。低い物理フレームレートを使用ながら、リジッドボディ補間を有効にして滑らかな動きを実現します。振動なしで完全に流動的なフレームレートを実現するには、iOS で得られるゲームの平均フレームレートに基づいた固定の deltaTime 値を選ぶのが最善です。1:1 またはフレームレートの半分が推奨されます。例えば、30 fps である場合は、固定フレームレート (0.033 または 0.066) に対し 15 または 30 fps を使用するとよいでしょう。

Unity を使ってギャラリー、ミュージックライブラリ、実際の iPod プレイヤーなどの機能にアクセスできますか。

回答: はい、Unity の iOS サポート機能を実装すればアクセスできます。Unity の iOS 向け機能は、ネイティブのプラグインシステムをサポートします。そこでは必要などんな機能でも追加できます。ギャラリー、ミュージックライブラリ、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 要素はできる限り最小限に使用してください。


  • 2018–06–14 修正されたページ
iOS 用ゲームの開発について
iOS アカウント設定