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

iOS 特有の最適化

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

Script Call Optimization

UnityEngine 名前空間のほんどの関数は C/C++で実装されています。C/C++関数を Mono スクリプトからコールすることはパフォーマンスオーバーヘッドを伴います。そこで Script Call Optimization を利用すると、毎フレーム 1 から 4 ミリ秒の節約ができます。

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

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

Other Settings セクションの Script Call Optimization* 設定を表示します。

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

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

希望のフレームレートを設定

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

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

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

Accelerometer Frequency (加速度センサーの周波数) の調整

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

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