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; } }
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.