Instructs the game to try to render at a specified frame rate.
The default targetFrameRate
is a special value of -1, which indicates that the game should render at the platform's default frame rate. This default rate depends on the platform:
- On standalone platforms the default frame rate is the maximum achievable frame rate.
- On mobile platforms the default frame rate is less than the maximum achievable frame rate due to the need to conserve battery power. Typically on mobile platforms the default frame rate is 30 frames per second.
- All mobile platforms have a fix cap for their maximum achievable frame rate, that is equal to the refresh rate of the screen (60 Hz = 60 fps, 40 Hz = 40 fps, ...). Screen.currentResolution contains the screen's refresh rate.
- Additionally, all mobile platforms can only display frames on a VBlank. Therefore, you should set the targetFrameRate
to either -1, or a value equal to the screen's refresh rate, or the refresh rate divided by an integer. Otherwise, the resulting frame rate is always lower than targetFrameRate
. Note: If you set the targetFrameRate
to the refresh rate divided by an integer, the integer division leads to the same effective fps as setting QualitySettings.vSyncCount to the same value as that integer.
- iOS ignores the QualitySettings.vSyncCount setting. Instead, the device displays frames on the first possible VBlank after the frame is ready and your application achieves the targetFrameRate
.
- On WebGL the default value lets the browser choose the frame rate to match its render loop timing which generally produces the smoothest results. Non-default values are only recommended if you want to throttle CPU usage on WebGL.
- When using VR Unity will use the target frame rate specified by the SDK and ignores values specified by the game.
Setting targetFrameRate
does not guarantee that frame rate will be achieved. There can be fluctuations due to platform specifics, or the game might not achieve the frame rate because the device is too slow.
Additionally if the QualitySettings.vSyncCount property is set, the targetFrameRate
will be ignored and instead the game will use the vSyncCount and the platform's default render rate to determine the target frame rate. For example, if the platform's default render rate is 60 frames per second and vSyncCount is set to 2, the game will target 30 frames per second.
In the Editor, targetFrameRate
affects only the Game View. It has no effect on other Editor windows.
using UnityEngine;
public class Example { void Start() { // Make the game run as fast as possible Application.targetFrameRate = 300; } }