unity優化筆記

優化筆記

unity 打包資源包含哪一些:

  • 1. resources文件下被程序應用的資源。優化方案:

    • ①對刪除被引用文件內沒有被用到的資源。

    • ② 儘量把需要用到同時在一起出現的紋理放在一個圖集中。

  • 2. streamingAssets文件夾下面的所有資源。優化方案:

    • ① 刪除不必要的資源,比如不要把安卓下的資源打包到iphone中。

    • ② 在大bundle的時候,可以考慮bundle的壓縮。

把資源打成bundle對資源的影響

  • 優點:會降低包的的大小。

  • 缺點:需要花一點時間進行減壓資源。

紋理格式對性能和包大小影響

  • 對沒有特殊要求的圖片:

  • 安卓

    • 通常使用RGBA16 ,1024*1024 資源大小和佔內存都是 2M

    • 推薦使用 ETC + A  , 1024 * 1024資源大小和內存大小 1M(只有在openGL 2.0以上可以使用,因爲在GPU不支持ETC時,會把壓縮的圖減壓成原圖大小及RGBA32)。

  • ios

    • 通常使用pvrtc,1024 * 1024資源大小和佔內存都是1M。

  • 注意:在移動平臺上一個好的壓縮格式,可以減小包和咱內存的大小。假如要支持多個平臺,建議對不同平臺進行相應的壓縮。

  • 壓縮格式缺點:由於圖片被壓縮了,所以在一定程度會出現一點折損。有的時候會出現黑邊情況。當有圖有這種情況時,建議使用原圖,不要壓縮。

drawcall優化

  • 優化drawcall關鍵在於----效果,粒子,材質,pass等等。

動畫的優化

  • 可以考慮最後的死亡動畫和其他動畫分離開來。

    • 靈活性更高,可以使用不同的材質用於死亡

    • 減少對其他腳本的維護

針對低端機優化

  • 設備不同的代支持不同功能,性能差別很大。應查詢設備的代,並確定應禁用哪些功能以補償較慢的設備

shader 優化

  • 在手遊,由於對性能要求比較高,所以不建議使用SurfaceShader。因爲SurfaceShader是一個比較“通用”的功能,而通用往往導致性能不高

  • 特徵是在SubShader裏出現CGPROGRAM和ENDCG塊。(而不是出現在Pass裏。因爲SurfaceShader自己會編譯成多個Pass。)

動畫的優化

  • 使用身體遮蔽的好處是它們有助於減少內存開銷,因爲不活動的身體部位無需關聯動畫曲線。此外,不使用的曲線無需在播放過程中進行計算,這有助於減少動畫的 CPU 開銷。

優化內置 iOS 播放器的大小

  • 減少播放器大小的兩種主要方式是更改 Xcode 中的活動生成配置 (Active Build Configuration) 以及更改 Unity 的剝離級別 (Stripping Level)

如何讓發佈版本儘可能的小的簡單清單。

  • 最小化資源:啓用 PVRTC 紋理壓縮,儘可能降低其分辨率。同時,儘量減少未壓縮的音頻數量。點擊此處,查看更多減少文件大小的提示。

  • 設置 iOS 剝離級別爲使用 micro mscorlib。

  • 設置腳本調用優化級別爲快速但不支持異常 (Fast but no exceptions)。

  • 切勿讓代碼與 System.dll 或 System.Xml.dll 產生任何關聯,這些庫不 與 micro mscorlib 兼容。

  • 刪除不必要的代碼依賴性。

  • 設置 API 兼容級別爲 .Net 2.0 子集。請注意,.Net 2.0 子集與其他庫的兼容性非常有限。

  • 設置目標平臺 (Target Platform) 爲 armv6 (OpenGL ES1.1)。

  • 切勿使用 JS 數組。

  • 避免泛型容器與結構等數值類型相結合。

注意: 但凡方便的功能,裏面就必然有性能陷阱

對圖集壓縮時,一定要注意,圖集必須是正方形,同時圖集的長和寬必須是2的冪。

把200M的安裝包壓縮到50M安裝包的方法:

  • 把所有能壓縮的紋理都壓縮。ios 選着使用pvrtc ,安卓使用ETC+apl 通道。

  • 把所有的大圖拆成小圖。

  • 把能放到資源負上的資源,都放到資源服上,進行動態加載。

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