H5_game性能優化總結

一、內存優化
1.對象池優化,LayaAir引擎中的對象池:laya.utils.Pool
2.使用含有對象池的Handler處理異步回調
Handler()沒有使用對象池,Laya.Handler.create()使用了對象池
3.將不使用的對象設置爲null,TypeScript最終編譯成JavaScript,而JavaScript運行時無法啓動垃圾回收器,當對象設置爲null時,不會立即將其從內存中刪除,只有系統認爲內存足夠低時,垃圾回收器纔會運行,內存分配(不是對象刪除)會觸發垃圾回收,當存在循環引用時,垃圾回收無法回收。
4.當不需要使用的資源時,使用Laya.loader.clearRes將資源卸載
5.儘量避免大量使用濾鏡、遮罩,或者能不用就不要用。如果需要濾鏡效果直接讓美術模擬出圖
二、圖形渲染
1.降低顯示對象的嵌套層次,減少sprite數量
2.將不可見區域的對象儘量移除或設置visible = false(移除 優先 visible = false)
3.將靜態內容(加載後不會一直刷新變化的內容)設置cacheAs屬性爲"normal"或"bitmap"
4.儘量保證圖片渲染順序是挨着的,盡力不要讓不同圖集交叉渲染
5.盡力保證一個面板所有資源來源一個圖集,以此減少提交批次
6.對於需要持續變更文本內容的Label,使用changeText方法變更文本,這就如Flash中append方法






(1)使用changeText設值 (2)使用.text設值
上面兩張圖都是創建10000個文本,並每秒更新文本內容,內容爲當前時間戳,其實我並沒有感受到性能差距,不過這樣做總是好的~~~~

三、CPU優化
1.JavaScript中任何對象都是動態的,在大量的屬性裏查找某屬性可能會很消耗性能,如果需要頻繁使用某個屬性值,可設置爲局部變量進行引用
2.對於兩種計時器(幀計時,時間計時)在不使用的時候都需要及時銷燬
3.在使用Laya的時候會遇到一個坑,在給sprite繪製紋理的時候,無法獲取sprite尺寸,這是Laya出於性能考慮,在繪製紋理後需自行通過Texture尺寸設置sprite尺寸,重複觸發autoSize對於大量子對象的容器是不可取的。
4.對於頻繁操作,可以使用延遲調用的方法,避免重複高頻計算,在Laya中使用callLater方法實現
5.良好的資源加載及卸載管理

文檔連接:https://ldc.layabox.com/doc/?nav=zh-ts-0-3-0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章