今天給大家整理一些cocos creator 常用的一些優(yōu)化技巧和手段轿钠,希望對大家的項(xiàng)目有所幫助背镇。
一: 資源包體大小優(yōu)化:
????? (1)去掉不用的資源蔑鹦,去掉不用的代碼模塊;
????? (2)壓縮png圖片,在清晰度課接受的范圍內(nèi)讓圖片的體積更小;
????? (3)壓縮聲音數(shù)據(jù)柬帕,多聲道變單聲道哟忍,降低采樣率;
????? (4)在需求的允許下降低圖片的部分精度,比如陷寝,1920x1080的圖片---> 960x540;
????? (5)特殊的字體锅很,不要直接帶字體文件,而是使用美術(shù)字來替代, 盡可能不要帶字體文件;
二:圖集打包:
??? 我們很多人喜歡用散圖凤跑,這樣爆安,會影響繪制效率,所以一般我們會把散圖達(dá)成圖集仔引,一次裝載到顯卡, 同時(shí)多個物體可以共用一個drawcall來批量完成繪制, 使用圖集的時(shí)候扔仓,注意同時(shí)使用的圖片放到一起,每個場景都要用的圖片放一起咖耘。不要把不同時(shí)會使用的圖片放到圖集里面翘簇。這樣不利于資源卸載
三: 動畫優(yōu)化:
??? 內(nèi)存大小優(yōu)化: 如果動畫內(nèi)存過多,比如幀動畫儿倒,可以考慮使用骨骼動畫來代替幀動畫;
??? 運(yùn)行性能優(yōu)化: 大量骨骼動畫版保,可能導(dǎo)致幀率較低,可以考慮在允許的范圍內(nèi)用幀動畫替換;
??? 避免動畫中綁定代碼: 動畫編輯器動畫時(shí)义桂,盡量不要使用動畫事件來調(diào)用代碼找筝,避免不必要的代碼管理麻煩。
四:資源管理:
??? (1)不用的資源慷吊,在場景切換的時(shí)候袖裕,如果資源吃緊,可以把他卸載掉;
??? (2) 進(jìn)入到游戲場景之前溉瓶,將接下來常用的資源急鳄,預(yù)先加載進(jìn)來,避免運(yùn)行中加載出現(xiàn)"長時(shí)間卡住”的現(xiàn)象, 場景資源多的堰酿,加資源加載過度疾宏;
?? (3) ?對于常用的對象和物體大量的分配與釋放,可以考慮 使用節(jié)點(diǎn)池來進(jìn)行緩存;
五:代碼優(yōu)化:
?? (1)避免在運(yùn)行時(shí)才生成數(shù)據(jù)触创,比如地圖數(shù)據(jù)坎藐,路點(diǎn)數(shù)據(jù),能離線生成的最好先離線生成出來;
?? (2)在update中避免使用 節(jié)點(diǎn)查找等,可以考慮用變量在初始化的時(shí)候岩馍,把常用的節(jié)點(diǎn)碉咆,組件保存起來;
?? (3)每個函數(shù)盡可能保持足夠的簡單, 功能單一;
?? (4)能自己編碼實(shí)現(xiàn)的,盡量少用大型的框架庫蛀恩,比如物理引擎等疫铜。能不用就不用;
?? (5)復(fù)雜的算法,可以考慮預(yù)先計(jì)算好双谆,用空間換時(shí)間;
?? (6)代碼命名要規(guī)范壳咕,結(jié)構(gòu)要清晰;
?? (7)不要再界面上做過多的代碼綁定;
?? (8)避免使用生僻的語法,用法顽馋,組件等谓厘,讓代碼升級的時(shí)候更方便;
?? … …?
六:? setting.js 優(yōu)化
資源放到resources文件夾下,會導(dǎo)致setting.js變大趣避,所以庞呕,不用代碼加載的資源新翎,千萬別放resources文件夾下;
七:運(yùn)行時(shí)內(nèi)存優(yōu)化:
???? 分析內(nèi)存的占用情況程帕,內(nèi)存大頭一般都是圖片資源。
??? ?圖片在運(yùn)行時(shí)的內(nèi)存大小是固定的地啰,和壓縮算法沒有關(guān)系愁拭,因?yàn)樽罱K要解壓出來, 1920x1080大小的圖片內(nèi)存解壓開后大約是1920x1080x4(每個像素4字節(jié)),
這個內(nèi)存占用亏吝,和你的圖片是png,還是jpg關(guān)系不大岭埠。所以可以估算處大概內(nèi)存。
???? 根據(jù)運(yùn)行時(shí)候圖片的內(nèi)存情況蔚鸥,刪除不用的圖片惜论,同時(shí)可以考慮降低部分圖片的分辨率來降低內(nèi)存占用。
??? 運(yùn)行時(shí)后止喷,可能節(jié)點(diǎn)越來越多馆类,內(nèi)存越來越大,也越來越慢弹谁,把不用的節(jié)點(diǎn)都要刪除掉, 檢查節(jié)點(diǎn)數(shù)目乾巧,資源等;
… …
未完,敬請關(guān)注后續(xù)更新和項(xiàng)目實(shí)踐预愤。
cocos creator學(xué)習(xí)交流群點(diǎn)擊一起交流學(xué)習(xí)