1.對Time類的介紹
首先介紹兩個概念:現實時間和遊戲時間。大多數Time類都是依賴于遊戲時間的。
現實時間也就是不依賴于程式内部,就算程式暫停也會繼續計算的真實時間,而遊戲時間是基于程式内部的,可以自行調整。
1.Time.time:
從遊戲開始後所運作的時間,會受時間縮放比例的影響。
2.Time.realtimeSinceStartup:
從遊戲開始後所運作的真實時間,不會受時間縮放比例的影響。
3.Time.timeScale:
時間的縮放,Time.timeScale為1是預設值,為0可用于遊戲的暫停,為2可用于遊戲的快進。
可在Edit->Project Setting->Time的Time Scale中設定時間縮放。
1.Time.timeScale不會影響Update和LateUpdate,因為Time.timeScale不會影響和幀率有關的事情,Update和LateUpdate是受到幀率影響而不是受到時間影響。
2.Time.timeScale會影響FixedUpdate,因為FixedUpdate是受到時間影響的。
3.Time.timeScale是對于整個遊戲的而不是單個場景。
4.Time.timeScale的值是一個[0,100]的數。
4.Time.timeSinceLevelLoad:
目前場景加載完開始計算,表示加載完場景到目前為止運作的時間,會受時間縮放比例的影響。
5.Time.unscaledTime:
從遊戲開始後開始計時,表示遊戲到目前為止運作的時間,不會受時間縮放比例的影響。結果與Time.realtimeSinceStartup一樣。
6.Time.deltaTime:
表示從上一幀到目前幀時間,也就是時間增量,以秒為機關。Time.deltaTime 就是 1 除以幀率的結果,它的機關為 秒 / 幀。
它是受到時間縮放影響的,當Time.timeScale為0時,Time.deltaTime也為0。
測試:在FixedUpdate中Time.deltaTime就是Time.fixedDeltaTime,而Update和LateUpdate時間增量是不固定的由幀率(FPS)決定。![]()
Unity中Time類詳解
7.Time.fixedDeltaTime:
fixedDeltatime是一個固定的時間增量。以秒為機關,在Edit->ProjectSettings->Time中Fixed Timestep設定的值就是Time.fixedDeltaTime。
不論在哪個Update中,值都是不變的,隻受到Fixed Timestep設定的值的影響。![]()
Unity中Time類詳解
8.Time.frameCount:
總幀數
2.适用場景
1.Time.realtimeSinceStartup:用于測試方法的性能
Unity中Time類詳解
Unity中Time類詳解
Unity中Time類詳解
2.Time.deltaTime:Update中移動
如果在Update中這樣寫:表示每幀移動1米。
運作後發現物體移動卡頓,因為Update每幀調用一次,然而每幀的間隔是不固定的導緻第一幀運作X米,第二幀運作Y米,是以移動的不平滑會出現卡頓現象。
是以要解決卡頓現象并且讓物體每秒鐘移動1米,需要這樣寫:
運作後發現遊戲物體每秒移動1米,并且不會卡頓。
因為transform.Translate的參數接收的其實是一個位移,位移=速度*時間。
假如兩台電腦A和B,電腦A的幀率為50,則Time.deltaTime就是1/50,電腦B的幀率為80,則Time.deltaTime就是1/80。無論電腦的幀率如何都是每秒運作多少幀*Time.deltaTime,對于A電腦每幀的位移=1*50*1/50=1,B也是如此,這樣就都是每秒運作1米了。