強火で進め

このブログではプログラム関連の記事を中心に書いてます。

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
System Timer(NSTimer)選択時に使用可能な設定

kThrottleFPS の値を変更する事でレンダリングに高い優先度を与える事が可能です。デフォルトの値は 2.0 です。

#define kThrottleFPS 2.0

数値が大きいほどレンダリングが優先されます。タッチイベントや加速度センサーの反応を見ながら調整して下さい。

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 に変更された様です。