この記事でのバージョン
Unity 6000.1.11f1
はじめに
Unityでスマホ向けにゲームを作っていると消費電力や発熱が気になることがあります。
今回はそんな時に使える描画回数だけを減らせる
OnDemandRenderingのrenderFrameIntervalという設定の紹介です!
![]() |
ちなみに似たような設定にApplication.targetFrameRateがありますが、
こちらは描画だけでなく、Updateなどの処理回数も減るため、必要に応じて使い分ける感じになります。
OnDemandRendering.renderFrameInterval
さっそく使い方ですが、OnDemandRendering.renderFrameIntervalに
「何フレームに1回描画するか(描画回数を何分の1にするか)」という値を設定するだけ。
(0か1を設定したらなら通常の状態)
//2フレームに1回描画 = 60FPSなら1秒に30回描画 OnDemandRendering.renderFrameInterval = 2;
もちろん、描画回数を減らせば負荷はグッと減りますが、動きがカクカクになるので、
描画がそんなにいらない場面で下げる、端末によっては下がるみたいな使い方になると思います。
また、実際に今フレームが描画されるか確認にはwillCurrentFrameRender、
描画FPS(=1秒に何回表示されているか)の確認にはeffectiveRenderFrameRateが使えます。
//描画FPSの確認 Debug.Log($"設定前 : effectiveRenderFrameRate {OnDemandRendering.effectiveRenderFrameRate}"); OnDemandRendering.renderFrameInterval = 6;//描画を1/6 = 1秒10に変更 Debug.Log($"設定後 : effectiveRenderFrameRate {OnDemandRendering.effectiveRenderFrameRate}");
private void Update() { //描画されたか確認 Debug.Log($"willCurrentFrameRender {OnDemandRendering.willCurrentFrameRender}"); }
![]() |
