【Unity】描画の間隔を制御する「OnDemandRendering」について
Unity 2019.3 から 描画の間隔を制御する API「OnDemandRendering」が追加されています。
Unity – Scripting API: OnDemandRendering
目次
実装部分
UnityCsReference/OnDemandRendering.bindings.cs at master · Unity-Technologies/UnityCsReference
OnDemandRendering
renderFrameInterval
Application.targetFrameRate = 60;
UnityEngine.Rendering.OnDemandRendering.renderFrameInterval = 2;
描画の更新間隔を調整できる。 targetFrameRate が60でrenderFrameInterval に2を設定した場合、2フレームに一度描画更新となる。 renderFrameInterval の素晴らしい所は、これまで targetFrameRate でアプリ全体のフレームレートを落とすことでスマートフォンのバッテリー消費を減らすなど対策していたものが renderFrameInterval を使うことで「アプリ全体のフレームレートは高いまま、描画だけ落とす」ことが可能となります。フレームの間隔による「ユーザーの入力受付」時間が遅くならないのはとても良いです。
willCurrentFrameRender
if(UnityEngine.Rendering.OnDemandRendering.willCurrentFrameRender)
{
// 描画更新するフレームです、
}
現在のフレームが描画するフレームか確認できるみたいです。
effectiveRenderFrameRate
var effectiveRenderFrameRate = UnityEngine.Rendering.OnDemandRendering.effectiveRenderFrameRate;
描画のフレームレートを確認できる。 Application.targetFramerate が 60 の状態でrenderFrameInterval が1であれば60, 2なら30 といった具合に描画のフレームレートを取得できます。
まとめ
ローディング画面など、動きの少ない画面で特に有効に作用するため積極的に使っていきたいですね。