Version: 2017.4
iOS でのパフォーマンスを最適化
ビルトインプロファイラーによるパフォーマンスの測定

iOS 固有の最適化

このページでは、iOS デプロイメント特有の最適化の詳細について説明します。

スクリプトコールの最適化

Most of the functions in the UnityEngine namespace are implemented in C/C++. Calling a C/C++ function from a Mono script involves a performance overhead, so you can save about 1 to 4 milliseconds per frame using iOS Script Call optimization.

iOS Script Call Optimization は Player Settings ウィンドウ( Edit > Project Settings > Player) を開き、下のような iOS アイコンを選択します。

iOS アイコン - Player Settings ウィンドウの iOS 設定にアクセスするには、これを選択します
iOS アイコン - Player Settings ウィンドウの iOS 設定にアクセスするには、これを選択します

Locate the Script Call Optimization setting in the _Other Settings section.

この設定のオプションには以下の通りです。

  • Slow and Safe - デフォルトの Mono の内部コールハンドリングで例外処理付きです。
  • Fast but no exceptions - Mono 内部コールハンドリングのより速い実装です。ただし、例外処理はサポートされてないため使用は注意が必要です。例外を明示的にハンドリングしないアプリ (また、対応がそもそも必要ない) にはこのオプションが理想的です。

Note: There is no performance benefit when using the IL2CPP scripting backend. However, we recommend using Fast but no exceptions on release builds to avoid undefined behaviour.

フレームレートの設定

Unity iOS ではアプリケーションがレンダリングループを実行する頻度を変更することが可能です。デフォルトでは 30 フレーム毎秒です。バッテリー消費を節約するためにこの数字を下げることはできますが、この節約はフレーム更新が犠牲になります。反対にフレームレートを増やすと、タッチ入力や加速度センサー処理といった、他の処理よりもレンダリングの優先度をあげることができます。フレームレートがどのようにゲームプレイへ影響するかを判断するには、フレームレートを変えて実験してみる必要があります。

もしアプリケーションが重たい計算処理やレンダリングを伴っており、例えば 15 フレーム毎秒しか維持できない場合、希望のフレームレートを 15 以上に設定したからといってパフォーマンスは上がりません。より高いフレームレートを得るためには、アプリケーションを十分に最適化する必要があります。

フレームレートを設定するには、Application.targetFrameRate を変更します。

Tuning accelerometer processing frequency

もし加速度センサーがあまりにも頻繁に処理される場合、ゲーム全体のパフォーマンスが結果的に影響を受ける場合があります。デフォルトでは、Unity iOS アプリケーションは加速度センサーを毎秒 60 回サンプリングを行います。加速度センサーのサンプリング周波数を下げるとこでパフォーマンス改善がみられるかもしれません。また、加速度センサーを使用しないゲームでは 0 に設定することもできます。加速度センサーの周波数を変更するには iOS Player SettingsOther Settings の Accelerometer Frequency を変更します。


iOS でのパフォーマンスを最適化
ビルトインプロファイラーによるパフォーマンスの測定