iPhone向けに出力されたファイルにて行う設定
UnityのiPhone版ではBuildを行うとXcodeプロジェクトとプログラム関連のファイルが出力されたのちXcodeでビルドが行われます。
この出力されたファイルを直接編集する事によってのみ設定可能なパラメータが存在します。
この設定は基本的には AppController.mm ファイルに記載されている様です。
FPSの設定
FPSの設定するには kFPS の定義を変更します。デフォルトは30FPS。
#define kFPS 30
(2013/03/08 追記)
現在ではちゃんとUnityのIDE上で設定したFPSの値が反映される様になりました。
(追記ここまで)
レンダリングループ
レンダリングループは以下の3種類が選択可能です。
- System Timer(NSTimer)
- Thread
- Event Pump
デフォルトではスレッドベース。
//#define FALLBACK_LOOP_TYPE NSTIMER_BASED_LOOP #define FALLBACK_LOOP_TYPE THREAD_BASED_LOOP //#define FALLBACK_LOOP_TYPE EVENT_PUMP_BASED_LOOP
使用したいレンダリングループの定義のコメントアウトする事で変更可能です。もし、システムタイマー(NSTimer)ベースのループにしたい場合は以下の様に変更します。
#define FALLBACK_LOOP_TYPE NSTIMER_BASED_LOOP //#define FALLBACK_LOOP_TYPE THREAD_BASED_LOOP //#define FALLBACK_LOOP_TYPE EVENT_PUMP_BASED_LOOP
Event Pump選択時に使用可能な設定
kMillisecondsPerFrameToProcessEvents で毎フレームごとにOSがイベントを処理出来る時間をミリ秒で指定。デフォルトは 3 。
#define kMillisecondsPerFrameToProcessEvents 3
数値が大きいほどタッチイベントや加速度センサーの反応が良くなり、代わりに描画のパフォーマンスが落ちます。
ディスプレイリンク(CADisplayLink)のサポート
iOS 3.1で導入されたCADisplayLinkを利用する場合は以下の定義を
#define USE_DISPLAY_LINK_IF_AVAILABLE 0
以下のように変更。
#define USE_DISPLAY_LINK_IF_AVAILABLE 1
加速度センサーのチェック頻度の設定
kAccelerometerFrequency で加速度センサーのチェック頻度(1秒当たりのチェック回数、Hz)を変更。デフォルトは 60.0 。
#define kAccelerometerFrequency 60.0
0 を指定すると加速度センサーの値をチェックしなくなります。ゲームに加速度センサーの値を使っていない場合はパフォーマンスとバッテリーの面から 0 を指定しておきましょう。
(2013/05/13 追記)
現在ではUnityのIDE上で「Disabled(無効)/15Hz/30Hz/60Hz/100Hz」のいずれかを設定出来る様に成っています。
(追記ここまで)
関連情報
Unity - Tuning Main Loop Performance
http://unity3d.com/support/documentation/Manual/iphone-Optimizing-MainLoop.html
こちらのドキュメントだと
//#define MAIN_LOOP_TYPE NSTIMER_BASED_LOOP #define MAIN_LOOP_TYPE THREAD_BASED_LOOP //#define MAIN_LOOP_TYPE EVENT_PUMP_BASED_LOOP
などと記載されていますが現在のバージョンのUnityでは MAIN_LOOP_TYPE から FALLBACK_LOOP_TYPE に変更された様です。