找回密碼
 注冊帳號

掃一掃,訪問微社區

時間管理器(timemanager)

2015-1-7 04:36| 發布者: 楊炎| 查看: 2544| 評論: 0|原作者: 蠻牛|來自: unity3d腳本manual

摘要: 時間管理器 (time manager)時間管理器 (time manager)屬性屬性:功能:固定時間步長 (fixed timestep)獨立于幀速率的時間間隔,用來命令何時執行物理計算和fixedupdate()事件。允許的最大時間步長 (maximum allowed ...

時間管理器 (time manager)

時間管理器 (time manager)

屬性

屬性:

功能:

固定時間步長 (fixed timestep)

獨立于幀速率的時間間隔,用來命令何時執行物理計算fixedupdate()事件。

允許的最大時間步長 (maximum allowed timestep)

獨立于幀速率的時間間隔,當幀速率低時,它會覆蓋最壞的案例場景。執行物理計算和(fixedupdate()) 事件的時間不會超過規定的時間。

時間尺度 (time scale)

時間前進的速度。更改此值以模擬子彈時間特效。1 表示實時時間。.5 表示速度減半;2 表示速度加倍。

詳細信息

固定時間步長 (fixed timestep)

對于穩定的物理模擬來說,固定時間步長 (fixed time stepping) 非常重要。計算機不盡相同,不同的硬件配置在運行 unity 游戲時表現出來的性能也不同。因此,物理計算必須獨立于游戲的幀速率進行。諸如碰撞檢測和剛體 (rigidbody) 移動這樣的物理計算是在獨立于幀速率的離散固定時間步長中進行。這使不同電腦間或幀速率發生變化時模擬的一致性更強。例如,幀速率可能會由于屏幕上多個游戲同時進行或用戶在后臺執行另一應用程序而降低。

以下是固定時間步長的計算方法。在屏幕上繪制幀之前,unity 將固定時間提前一段固定增量時間,并在到達當前時間之前執行物理計算。這直接與固定時間步長 (fixed timestep)屬性相關聯。固定時間步長 (fixed timestep)的值越小,進行物理計算的頻率越高。每秒的固定幀數的計算方法是,用 1 除以固定時間步長 (fixed timestep)。因此,1/0.02 = 50(幀每秒) 以及 1/0.05 = 20(幀每秒)。

簡而言之,固定更新值越小,物理模擬越精確,但是 cpu 的負擔也會更大。

允許的最大時間步長 (maximum allowed timestep)

固定時間步長是穩定的物理模擬的保證。然而,如果游戲對物理負擔大并且已經運行緩慢或偶爾會降至低幀速率,那么固定時間步長也可能對性能帶來負面影響。幀所用時間越長 - 就必須執行更大的固定更新步長以轉到下一個幀。這會導致性能下降。為避免這種場景的出現,unity ios 引入了允許的最大時間步長 (maximum allowed timestep),以確保物理計算的運行時間不會超出規定的閾值。

如果幀所用時間超過允許的最大時間步長 (maximum allowed timestep)中規定的時間,那么物理會“假設”幀僅用了允許的允許的最大時間步長 (maximum allowed timestep)秒數。換句話說,如果幀速率降低到某個閾值以下,那么剛體的速度就會變慢一點,以便讓 cpu 可以趕上。

允許的最大時間步長 (maximum allowed timestep)對物理計算和fixedupdate()事件都會造成影響。

允許的最大時間步長 (maximum allowed timestep)固定時間步長 (fixed timestep)時,都以秒為單位。因此,如果幀速率降低到 1/0.1 = 10 (幀每秒)以下,那么設置 0.1 就會使物理和 fixedupdate() 事件速度降低。

典型場景

假設固定時間步長 (fixed timestep)是 0.01,也就是說應該每 10 毫秒處理一次 physx、固定更新 (fixedupdate) 和動畫。

當您的幀時間大約是 ~33每個視覺幀平均要執行 3 次固定循環。

但是,幀時間不是固定不變的,它取決于許多因素,包括您的場景狀態、os 后臺任務等。

由于 3. 的原因,幀時間有時會達到 40 - 50 毫秒,也就是說會執行 4 - 5 次固定步長循環。

當您的固定時間步長任務相當繁重時,physx、固定更新 (fixedupdate) 和動畫花費的時間會將幀時間延長 10 毫秒,也就是說為所有這些固定時間步長任務增加了一次迭代。

在一些不幸的情況下,5. 中描述的過程時間會延長至處理固定步長循環所用時間的 10 倍及其以上。

這就是引入允許的最大時間步長 (maximum allowed timestep)的原因。它是在單個視覺幀期間限制 physx、固定更新 (fixedupdate) 和動畫處理次數的方法。如果將允許的最大時間步長 (maximum allowed timestep)設為 100 毫秒,并固定時間步長 (fixed timestep)設為 10 毫秒,那么在每個視覺幀會最多執行 10 次固定步長任務。因此,隨著固定時間步長迭代次數的增加,小的性能故障有時會引發大的性能故障。通過將允許的允許的最大時間步長 (maximum allowed timestep)降到 30 毫秒,可將最大固定步長迭代次數限制到 3,這就是說您的 physx、固定更新 (fixedupdate) 和動畫不會將幀時間延長太多,但這種限制也有一些負面作用。您的動畫和物理在性能故障發生時會變慢。

提示

使玩家可以通過編寫腳本,動態地更改時間尺度 (time scale)來控制時間。

如果您的游戲物理負擔重或在fixedupdate()事件中花費大量時間,那么請將允許的最大時間步長 (maximum allowed timestep)設為 0.1。這會防止物理以低于 10 幀每秒的速率驅動游戲。

相關閱讀

文章點評
相關文章
女校游泳队彩金 什么是属于权重板块 麻将口诀 内蒙古十一选五前三走势图 辉煌棋牌怎么样 下载广东麻将 快乐彩浙江快乐彩十 大发pk10是国家的吗 打麻将时留牌的规律 玩腾讯分分彩大小方法 2020年香港今晚开奖日期 白城麻将规则 湖北快3号码单号遗漏 吉林11选5开奖 山东11选5开售时间 用流量打麻将费流量吗 天齐网3d图谜