OnDemandRendering.effectiveRenderFrameRate
Declaration
public static int effectiveRenderFrameRate;Описание
Текущая предполагаемая скорость отображения в кадрах в секунду округлена до ближайшего целого числа.
Если QualitySettings.vSyncCount больше 0, то вычисляется следующим образом:
FPS = Resolution.refreshRate / QualitySettings.vSyncCount / OnDemandRendering.renderFrameInterval
Если QualitySettings.vSyncCount равно 0 и Application.targetFrameRate также больше 0:
FPS = Application.targetFrameRate / OnDemandRendering.renderFrameInterval
Android, iOS и tvOS используют 30 FPS в качестве частоты кадров по умолчанию, если не указано другое значение. В этом случае возвращается 30 / OnDemandRendering.renderFrameInterval. Все остальные платформы возвращают значение Application.targetFrameRate.
using UnityEngine; using UnityEngine.Rendering; using System.Collections;
// This example shows how to use effectiveRenderFrameRate to ensure your application renders at a given frame rate regardless of // settings that could be changed by the user. Also demonstrates use of setting renderFrameInterval from a coroutine. public class Example : MonoBehaviour { void Start() { const int myTargetFrameRate = 10;
// Start off assuming that Application.targetFrameRate is 60 and QualitySettings.vSyncCount is 0 OnDemandRendering.renderFrameInterval = 6;
// Some applications may allow the user to modify the quality level. So we may not be able to rely on // the framerate always being a specific value. For this example we want the effective framerate to be 10. // If it is not then check the values and adjust the frame interval accordingly to achieve the framerate that we desire. if (OnDemandRendering.effectiveRenderFrameRate != 10) { if (QualitySettings.vSyncCount > 0) { OnDemandRendering.renderFrameInterval = (Screen.currentResolution.refreshRate / QualitySettings.vSyncCount / myTargetFrameRate); } else { OnDemandRendering.renderFrameInterval = (Application.targetFrameRate / myTargetFrameRate); } }
StartCoroutine(SlowRenderingFor5Seconds()); }
IEnumerator SlowRenderingFor5Seconds() { // After 5 seconds go back to rendering every frame yield return new WaitForSeconds(5); OnDemandRendering.renderFrameInterval = 1; }
void Update() { // For 5 seconds this will report that the effective framerate is 10. Afterward it will log what the framerate is given the current // quality and target framerate settings. Debug.Log("FrameRate: " + OnDemandRendering.effectiveRenderFrameRate); } }