原文地址: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; } }