using UnityEngine; using System.Collections; /// /// Provides control of target frame rate. /// /// /// This utility is useful for verifying frame-rate independence of behaviors. /// public class FrameRateControls : MonoBehaviour { public int targetRenderRate = 60; // must be > 0 public int targetRenderRateStep = 1; public int fixedPhysicsRate = 50; // must be > 0 public int fixedPhysicsRateStep = 1; public KeyCode physicsI = KeyCode.RightShift; public KeyCode decrease = KeyCode.DownArrow; public KeyCode increase = KeyCode.UpArrow; public KeyCode resetAll = KeyCode.Delete; // Use this for initialization void Awake () { if (QualitySettings.vSyncCount != 0) { Debug.Log("vSync will override target frame rate"); return; } Application.targetFrameRate = targetRenderRate; Time.fixedDeltaTime = 1f/((float)fixedPhysicsRate); } // Update is called once per frame void Update () { if (Input.GetKey (physicsI)) { if (Input.GetKeyDown (decrease)) { if (fixedPhysicsRate > fixedPhysicsRateStep) { fixedPhysicsRate -= fixedPhysicsRateStep; Time.fixedDeltaTime = 1f/((float)fixedPhysicsRate); } } if (Input.GetKeyDown (increase)) { fixedPhysicsRate += fixedPhysicsRateStep; Time.fixedDeltaTime = 1f/((float)fixedPhysicsRate); } } else { if (Input.GetKeyDown (decrease)) { if (targetRenderRate > targetRenderRateStep) { targetRenderRate -= targetRenderRateStep; Application.targetFrameRate = targetRenderRate; } } if (Input.GetKeyDown (increase)) { targetRenderRate += targetRenderRateStep; Application.targetFrameRate = targetRenderRate; } } if (Input.GetKeyDown (resetAll)) { Reset(); } } public void Reset() { targetRenderRate = 60; fixedPhysicsRate = 50; Application.targetFrameRate = -1; Time.fixedDeltaTime = 0.02f; } }