什麼是降幀&爲何降幀?性能
通常狀況下咱們爲了提升整個遊戲的體驗,因此咱們通常會將遊戲的幀數(每秒鐘刷新多少次)設置的比較高。通常狀況下,咱們的遊戲全部的代碼都是一幀執行一次。爲了讓每一幀都變成真的關鍵數據幀。不過,部分手機能性能可能跟不上,或者計算量太大的狀況下,手機的運算速度不可以支持的狀況,太高的性能消耗就會拖慢運算的速度,讓一秒內沒有辦法打到滿幀。因此就會以爲遊戲變得卡頓。優化
其實一部分邏輯並無必要每一幀都去執行,能夠將他們隔幾幀運行一次也不是不能夠。好比說傷害值的運算,傷害應該與遊戲運營的幀數無關,好比每0.1秒執行一次傷害代碼,那麼在滿幀60幀的狀況下,其實每6幀執行一次就OK。動畫
咱們之因此但願能提升幀數,是爲了製造流暢的感受。可是降幀則會違反這種感受。因此遊戲的幀數不能下降,或者在準確一點來講,遊戲的View的幀數不該該下降,減低的應該是邏輯幀數。設計
或者有朋友會問,若是咱們的程序最少的邏輯間隔時間是0.1的話。全部的遊戲邏輯都是間隔0.1斷定一次不就行了?這不是很簡單的事情?但實際上事情並無那麼簡單。通常狀況下咱們人眼的錄入認爲是16幀每秒。對象
如今的理論上知足16幀的遊戲,會顯得更加的流暢了,咱們知道一個16幀的遊戲,並不能讓人以爲很是流暢。爲何呢?其實緣由也很是簡單。人看到的東西會有預判,如今你看到這個怪物在水平移動,若是說遊戲表現出來的效果與你的預判是保持一致的,也許你會以爲這樣是顯得很是流暢的,可是若是怪物的移動跟你的預判不一致,那麼你就會以爲這個遊戲並不流暢。blog
那麼該怎麼去降幀?遊戲
在文中已是提到,我但願將遊戲的幀數分爲兩種,一種是邏輯幀,另一種View幀。View幀是滿幀在跑的。而邏輯幀則是間隔執行的。也沒錯。上文中已經提到了,簡單的區分這兩種更新的實際也並不合適。由於依然會有一點的卡頓,那怎麼纔會不卡呢。那就能夠將數據量分攤到各個幀裏邊,這樣也就達到要求了。遊戲開發
怪物會有兩種跟新模式開發
一、View更新:用來更新他的位置,動畫一類get
二、用來更新行爲:攻擊、打出傷害等
主循環會有多個對象列表好比說6個
那麼主循環會將每一次的Update標上記號。調用全部的對象的View更新方法和與標記相對應的對象列表的邏輯更新。
這樣就將全部的邏輯分攤到了各個幀數裏邊,讓各個幀數更平均一些,最後是達到流暢的目的
對遊戲感興趣的朋友們能夠在這方面深刻的進行研究,遊戲開發設計製做是屬於一個比較複雜的項目,要想對遊戲精通,還得從興趣的基礎上進一步的優化。