(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


省電力化や発熱低減させたい時に使える、描画回数だけを減らすOnDemandRendering.renderFrameInterval【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
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}");
}