思索了很久一直想寫一篇有關(guān)于自己實(shí)踐出來(lái)的技術(shù)文章,為此回報(bào)那些曾經(jīng)在網(wǎng)上無(wú)私分享知識(shí)的大佬马昨,以及希望對(duì)正在探索知識(shí)的孩子有所幫助犁跪!第一次寫文章,獨(dú)自摸索出來(lái)的東西漓穿,如有問(wèn)題請(qǐng)批評(píng)指出。標(biāo)題就寫1吧注盈,有心情有時(shí)間再寫我以后實(shí)踐的2
項(xiàng)目背景描述:creator開發(fā)晃危,安卓、ios集成老客。
資源大辛欧埂:png、jpg10兆左右胧砰、音頻:20兆鳍鸵,龍骨動(dòng)畫:50兆。安卓尉间、ios所需內(nèi)存500兆偿乖。
creator最初開發(fā):將所有節(jié)點(diǎn)資源放一個(gè)場(chǎng)景,節(jié)點(diǎn)資源全在一個(gè)場(chǎng)景代碼邏輯控制乌妒。效果:安卓? 中等手機(jī)打開會(huì)明顯黑屏汹想。原因:打開場(chǎng)景的時(shí)候,是一個(gè)加載資源到內(nèi)存的過(guò)程撤蚊,這個(gè)過(guò)程需要耗費(fèi)時(shí)間古掏,造成一個(gè)產(chǎn)品最不喜歡的黑屏。ios手機(jī)嫌棄內(nèi)存過(guò)大侦啸。
優(yōu)化之旅:1槽唾、將首次打開場(chǎng)景暫時(shí)未用到的資源放在打開場(chǎng)景之后加載丧枪,cc.loader.loadRes,這樣可以節(jié)約首次打開場(chǎng)景的時(shí)間庞萍。類似于很多游戲打開后是一個(gè)讀條的場(chǎng)景拧烦。或者在某個(gè)時(shí)間段悄悄加載钝计,這樣就避免用戶等待時(shí)間恋博。
2、 內(nèi)存優(yōu)化私恬、預(yù)制
一開始很不明白所謂的內(nèi)存優(yōu)化的概念是什么债沮。舉個(gè)例子:你新建一個(gè)空?qǐng)鼍埃僭陧?xiàng)目里面本鸣,就放100兆的廢資源吧疫衩,打包安卓,手機(jī)打開很快荣德。但是闷煤,如果這100兆資源全部放在場(chǎng)景里面用,再打包涮瞻、打開鲤拿、你需要等待很久。(安卓手機(jī)效果明顯一點(diǎn)饲宛,因?yàn)槲也惶?xí)慣蘋果產(chǎn)品)皆愉。這就是因?yàn)榇蜷_中,場(chǎng)景的資源需要加載到內(nèi)存里面去艇抠,所耗費(fèi)時(shí)間。而100兆廢資源不用就不需要加載久锥。那么家淤,是不是我們就可以悄悄的在場(chǎng)景某個(gè)階段悄悄加載呢?答案是可以的瑟由,前提是你自己的邏輯把控好絮重。
再舉個(gè)例子:LOL,王者榮耀進(jìn)游戲場(chǎng)景時(shí),10個(gè)玩家一起等待加載進(jìn)度歹苦,為什么會(huì)有這個(gè)步驟青伤?正如上訴所說(shuō),100多個(gè)英雄(理解為100多個(gè)預(yù)制)殴瘦,里面只要10個(gè)不到的英雄加載到場(chǎng)景里面去狠角,那么其余90多個(gè)英雄是不是就相當(dāng)于廢資源英雄呢?如果你把這剩余的英雄全放在游戲節(jié)點(diǎn)里面去蚪腋,那可想而知丰歌,你去網(wǎng)吧玩一把LOL姨蟋,或者上課悄悄加載一把王者榮耀,你的手機(jī)要是沒(méi)蹦的話立帖,你還沒(méi)開始玩眼溶,那么恭喜你,你已經(jīng)下課了晓勇。
上訴解釋貌似和內(nèi)存優(yōu)化沒(méi)太大關(guān)系堂飞,沒(méi)關(guān)系,預(yù)制的定義你明白了嗎绑咱?
我們100多個(gè)預(yù)制酝静,(音頻、動(dòng)畫羡玛、反正就是資源)别智,我們場(chǎng)景某個(gè)時(shí)間段需要用到的,你在這個(gè)時(shí)間段提前加載他稼稿,那么內(nèi)存就漲上去了薄榛,你加載的越多就漲的越多。ios的同事可不會(huì)大方的一直給我內(nèi)存让歼。那么你怎么辦敞恋,那就往游戲前面看看,不要的預(yù)制統(tǒng)統(tǒng)的從內(nèi)存里面釋放掉谋右。參考官方鏈接https://docs.cocos.com/creator/manual/zh/scripting/load-assets.html#%E8%B5%84%E6%BA%90%E7%9A%84%E4%BE%9D%E8%B5%96%E5%92%8C%E9%87%8A%E6%94%BE注意:資源釋放的時(shí)候硬猫,注意內(nèi)存泄露。這樣改执,我們就可以保證內(nèi)存盡可能的減小啸蜜。
除此之外:也就是我們對(duì)資源的優(yōu)化:pngquant,不明白的同學(xué)可單獨(dú)去了解一下辈挂。其次如內(nèi)存占用圖:美術(shù)在自作閃圖的時(shí)候衬横,我們將這些圖制作成一個(gè)plist文件,工具可采用TexturePackerGUI终蒂,也是以上一個(gè)優(yōu)化目的(畢竟當(dāng)初剛出道的時(shí)候可沒(méi)人這么教我)蜂林,
除此之外還有如下圖的PVR壓縮紋理以及ETC1,一般RPG\SLG等有大量圖片的游戲才用的到拇泣。