我正在使用以下代碼來計算Unity3d 4.0中的幀速率。它應用於NGUI標籤上。常量和可能不準確幀率
void Update() {
timeleft -= Time.deltaTime;
accum += Time.timeScale/Time.deltaTime;
++frames;
// Interval ended - update GUI text and start new interval
if(timeleft <= 0.0)
{
// display two fractional digits (f2 format)
float fps = accum/frames;
string format = System.String.Format("{0:F2} FPS",fps);
FPSLabel.text = format;
timeleft = updateInterval;
accum = 0.0F;
frames = 0;
}
}
這是以前的工作,或至少似乎是working.Then我是有一些問題與物理,所以我改變了固定時間步長0.005和最大時間步到0.017。是的,我知道它太低了,但我的遊戲在這方面工作得很好。
現在問題是上面的FPS代碼總是返回58.82。我檢查了單獨的設備(Android)。它只是沒有預算。我認爲這可能是正確的,但是當我看到分析器時,我可以清楚地看到那裏的起伏。所以顯然這是有點可疑的。
我做錯了什麼?我從某處複製了代碼(必須來自腳本wiki)。有沒有其他方法可以知道正確的FPS?
通過從this questions提示暗示,我已經嘗試了第一個答案中的所有方法。即使下面的代碼是返回一個常數58.82 FPS。它僅在Android設備中發生。在編輯器中,我可以看到fps的差異。
float fps = 1.0f/Time.deltaTime
;
所以我檢查了Time.deltaTime的值,它在設備中是0.017常量。這怎麼可能: -/
所以我只需要增加固定的時間步?我可以保持最大時間步長爲0.017嗎? – noob 2013-04-18 16:41:56
@創始人我認爲這可能有效。你可以嘗試不同的值。您也可以嘗試直接在設備上進行分析,以查看物理模擬需要多少毫秒,並相應地調整固定的時間步長。 – alexFlorea 2013-04-19 06:05:36