原文地址:https://docs.unity3d.com/ScriptReference/Application-targetFrameRate.html
描述:
指示游戏尝试以指定的帧率进行渲染(渲染帧率)。
默认的targetFrameRate是一个特殊值-1,它指示游戏应以平台的默认帧率进行渲染。此默认速率取决于平台:
- 在独立平台上,默认速率是最大可达到的帧速率。
- 在移动平台上,由于需要节省电池电量,因此默认帧率小于最大可达到的帧速率。通常在移动平台上,默认帧率为每秒30帧。
- 所有移动平台都具有针对其最大可达到帧率的修正上线,该上线等于屏幕的刷新率(60Hz=60fps,40Hz = 40fps,...).Screen.currentResolution 包含屏幕的刷新率
- 此外,所有移动平台只能在VBlank上显示帧。因此,您应该将targetFrameRate设置为-1,或者将其设置为等于屏幕的刷新率,或者将刷新率除以整数。否则,结果帧率始终低于targetFrameRate。注意:如果将targetFrameRate设置为刷新率除以整数,则整数除法将导致与将QualitySettings.vSyncCount设置为该整数相同的值相同的有效fps。
- IOS会忽略QualitySettings.vSyncCount设置。取而代之的是,设备在帧准备就绪并且应用程序达到targetFrameRate之后,会在第一个可能的VBlank上显示帧。
- 在WebGL上,默认值使浏览器可以选择帧率以匹配其渲染环定时,这通常会产生最平滑的结果。仅当要限制WebGL上的CPU使用帧率时才建议使用非默认值。
- 使用VR时,Unity将使用SDK指定目标帧率,并忽略游戏指定的值。
设置targetFrameRate不能保证将获得帧速率。由于平台的具体情况,可能会有波动,或者游戏可能无法达到的帧速率,因为设备太慢。
此外如果设置了QualitySettings.vSyncCount属性,则将忽略targetFrameRate,游戏将使用vSyncCount和平台默认渲染速率来确定目标速率。例如如果平台的默认渲染速率为每秒60帧,而vSyncCount设置为2(在Quality Setting 面板中对应的名字是 Every Second V Blank)
在编辑器中targetFrameRate仅影响游戏视图,对其他编辑器没有影响。
public void class Example { public void Start() { //如果你想自定义渲染帧率,必须将vSyncCount设置为0或者在QualitySetting面板中将V Sync Count 选为Don't Sync QualitySettings.vSyncCount = 0; Application.targetFrameRate = Screen.currentResolution.refreshRate / 4; } }