天天看點

遊戲性能優化(基礎)

把多張小圖合并為一張大圖

圖檔資源在遊戲中會大量頻繁地使用,而圖檔在記憶體中是按照2的幂次方來加載的,例如一張大小是2020像素的圖檔,在程式運作中是按照3232來處理的,而且從磁盤上加載每一張圖檔都屬于IO操作,非常耗費CPU時間,尤其是在Android的低端裝置上。是以通過圖檔打包工具(例如TexturePacker)把多張小圖檔合并到一張大圖裡,可大大減少IO操作,有效地減小記憶體占用,提高加載速度。

壓縮圖檔

圖檔也是占用記憶體和包體積最多的資源,例如一張大小是10241024像素、格式為RGBA8888的圖檔,每個像素占4個位元組,則該圖檔所占的記憶體就是102410244,即4MB,如果這張圖檔沒有半透明色,可以把它轉換為RGB565或RGB5551,這樣每個像素隻占2個位元組,畫質沒降多少,但該圖檔所占記憶體降了一半,即10241024*2=2MB。或者圖檔對畫質要求不高,可轉換為RGBA4444,同樣能節省一半記憶體。另外使用第三方工具(如ImageAlpha)對圖檔進行壓縮,可在基本不損畫質的情況下,減小圖檔大小。

減少不必要的定時重新整理(update)

定時重新整理類似于輪詢機制,程式會固定的定時調用該update函數,如每幀或每秒。整個遊戲是靠update來驅動的,例如士兵的移動、武器的自動開火、子彈的碰撞檢測等,這其中每一個upate都需要耗費cpu時間去處理,有些情況下可能是不必要的,是以把相關的邏輯盡量放在一個update中,或者采用事件驅動,隻有當該事件确實發生後才去執行相關邏輯,這些都可以減輕cpu的負擔,提高遊戲性能。

轉自原文連結

繼續閱讀