如何優化cocos2d程序的內存使用和程序大小:第二部分_(轉)

減小你的程序的大小

把紋理的顏色位深度減小到16位,不只能夠減小內存壓力,還能夠有效地減小程序的體積。可是,咱們還有其它方法能夠更進一步地減小程序的大小。html

TexturePacker PNG 圖片優化

若是你有某些緣由,讓你堅持要使用PNG文件格式而不是我以前極力向你推薦的pvr.ccz文件格式,那麼TexturePacker有一個選項,叫作「Png Opt Level」(Png優化級別),能夠幫助咱們減小png文件的大小(注意:這樣並不會影響圖片加載時間)ios

就我目前的理解來看,最大的優化級別能夠生成最小的文件大小。可是,它有一個缺點,就是很是耗時。對於2009年出的27寸的iMac來講,處理尺寸稍大的紋理,須要耗費10-20的時間來處理。因爲該優化過程採用了多線程的方式,因此,若是你有機器是四核的,那麼速度應該會快一些。xcode

固然,你只有在真正發佈應用的時候才須要利用這個優化特性。如今的問題是,它到底能夠減小多少文件體積呢?多線程

我最大的一張png圖片從2.4MB減小到了2.2MB.小一些的紋理從180kb減至130kb。可能單個文件減小的量並非不少,但是當你的png圖片的總大小有18MB時,它可使之減小至16MB。
注意,在xcode裏面有一項設置,你可能會把它忽略掉。你須要關閉"Compress PNG files"開關,由於這個選項有可能會使你的png圖片膨脹。你能夠在xcode的build settings裏面設置,以下所示:工具

若是激活此png壓縮選項,xcode會在png文件打包進程序的時候運行自帶的png優化程序。因此,有可能會使咱們先前使用TP優化過的png圖片再次膨脹。所以,再次確保這個選項已關閉!測試

不過即便你沒有禁用此選項,你的程序大小仍是會有所減少。由於,你有可能使用一些沒有被TP優化過的png圖片。優化

檢查你的程序在App Store 裏面的大小

在Xcode裏面,運行Archive build(在菜單中選擇Product->Archive)。當build成功的時候,Xcode的Organizer窗口會打開,而後你會看到一個「Estimate Size」(評估大小)的按鈕,能夠用來估算你的應用程序大小:ui

移除未使用的資源文件

在開發遊戲的過程當中,你會常常添加、移除和替換遊戲資源。因此,你可能會由於某些緣由,忘記移除一些不用的圖片資源。因此,你須要額外注意把它們都從項目中移除出去,至少要從程序的target中出去。spa

尤爲是你使用多個target的時候(好比,你同時維護ipad和mac版本),你就極有可能會在一個target裏面添加一些錯誤的資源。.net

固然,在移除資源以後,你必定要充分測試你的遊戲。切記!必定要充分測試。

減小聲音文件大小

有時候,咱們也會忽視這個問題。若是你不考慮聲音文件的格式,不論是就內存的使用仍是程序的大小而言,都是一種極大的浪費。下面是一些方法能夠用來減小聲音文件的大小。我推薦你們使用一款免費的聲音編輯工具

立體聲道變單聲道 – 你的mp3文件能夠採用立體聲,可是,這樣作值得嗎?若是你聽不出來差異的話,建議仍是採用單一聲道。這樣能夠把文件大小和內存使用都減小一半。

MP3 比特率 –在iOS設備上面,任何比特率大於192kbps的聲音都是浪費。你能夠儘可能採用低的比特率來得到最好的音質效果,這是一個折中。通常來講,96到128kbps對於mp3文件來講夠用了。

採樣率 – 大部分的聲音文件使用11,22,44,或者48kHz採樣率。採樣率越低,聲音文件越小。可是,這樣聲音質量也會越低。44kHz已經達到了CD的音質了,而48kHz會更好(這個差異只有調音師才能夠聽出來)

在大部分狀況下,44kHz或者更高的比特率都有點浪費。因此,能夠嘗試下減少採樣率(在Audacity裏面:Tarck->Resample)。不要只是修改採樣率,由於這樣會改變聲音文件的音高。

Streaming MP3 Files

mp3文件的播放,首先是加載到內存中,而後解碼爲未壓縮的聲音buffer,最後再播放。

就我目前所知,CocosDenshion的SimpleAudioEngine的playBackgoundMusic是流式播放mp3文件的。流試處理有兩個優勢:1.更小的內存足跡。2.解碼mp3文件採用ios硬件,而不是cpu。可是,硬件一次只能解碼一個文件,若是同時播放多個,那麼只有一個採用的是硬件解碼,其它的都是軟件解碼。

減小Tilemap大小

許多開發者沒有注意到,tilemap大小太大會消耗大量內存。假設你有一個1000*1000的tilemap,這個大概要消耗1M的內存--若是每個tile消耗一個字節的內存的話。然而,若是每個tile大概消耗64個字節的話,那麼這個tilemap就會消耗60MB內存。個人天啊!

除了寫一個更優的tilemap渲染器之外,咱們惟一能夠作的就是減小tilemap的大小了,也能夠把地圖一分爲二。

就沒啦?

哈哈,是滴。此次,我把文章變短一些,但願大家都看懂了。:)

 

原文:http://www.cnblogs.com/zilongshanren/archive/2012/12/16/2820352.html

相關文章
相關標籤/搜索