Unity3D性能優化之資源導入標准和屬性設置篇


  • 一、Unity使用的資源

1、外部資源:

不是Unity創建,而是外部工具做的模型以及貼圖或通用的格式資源。例如圖片資源、模型資源、動畫資源、視頻和聲音資源。

2、內部資源:

Unity創建的,並且只有放在Unity才能識別。例如腳本、Shader、場景、預設、材質、精靈、動畫控制器、時間線、物理材質等。

  • 二、Unity資源導入標准

1、紋理

  • 關閉Read/Write 選項的:Read/Write Enabel 選項啟用后, 選擇這個選項將會允許從腳本來訪問紋理數據, 開啟此
    選項后, 將會產生紋理數據的副本, 副本會占用內存, 等同於一個紋理數據會有雙倍的內
    存消耗。
  • 紋理按照平台壓縮格式:RGB32和RGB24等非壓縮格式紋理占用內存較大。帶有OpenGLES3或更高版本的Android的紋理格式應該是astc。另外Android按ETC2,IOS按PVRTC,PC按DXT5
  • 過濾模式Filter Mode設置為 Bilinear的紋理:Trilinear 三線性過濾(三線性插值) , 紋理會在不同的 mip 水平之間進行模糊 , 從而增
    加 GPU 開銷。
  • Sprite紋理關閉Mipmap:Mipmap 開啟后, 內存會是未開啟 Mipmap 的 1.33 倍, 因為 Mipmap 會生成一組長寬依
    次減少一倍的紋理序列, 一直生成到 1*1。Mipmap 提升 GPU 效率; 一般用於 3D 場景或角色, UI 不建議開啟。UI用的紋理關閉,3D模型和場景用到的紋理開啟。
  • Wrap 模式設置為 Clamp:Wrapmode 使用了 Repeat 模式, 容易導致貼圖邊緣出現雜色

2、模型

  • 關閉Read/Write 選項:Read/Write Enabel 選項啟用后, 選擇這個選項將會允許從腳本來訪問網格數據,開啟此選項后,將會產生網格數據的副本,副本會占用內存,等同於一個網格數據會有更多的內存消耗。一個用於呈現,一個用於系統內存中的腳本訪問(如果要進行代碼操作動態合批,就是開啟這個選項) 
  • Mesh Compression選項:設置為High
  • 開啟 OptimizeMesh 選項:對於模型相關, 開啟后, Unity 會對其進行網格優化, 提高。
  • Tangent 切線屬性:無必要不導入
  • Normal 法線屬性:無必要不導入
  • Color 屬性:(頂點色)無必要不導入
  • UV2 屬性:常規情況只會用到 UV1, UV2 一般不會用到,無必要不導入

3、音頻

  • 長音頻的Load Type用Streaming加載:Streaming 選項開啟后, 音頻加載方式變為邊播放邊讀取,能明顯降低內存,背景音樂使用這種方式。

4、組件

  • Animator 組件開啟 OptimizeGameObjects:OptimizeGameObject 可以有效降低動畫開銷
  • SkinnedMeshRenderer:不開啟MotionVector,啟用Skinned Motion Vectors將以消耗雙倍內存為代價提高蒙皮網格的精度
  • 不可見的 Image 組件:alpha=0 的 Image 組件依然會參與渲染,需要去掉
  • 不可見的 RawImage 組件:alpha=0 的 RawImage 組件依然會參與渲染,需要去掉
  • 使用了 Outline 組件:使用 Outline 效果會增加 4 倍的頂點數, 造成較高的重建開銷, 可用 shadow 替代。

5、腳本資源

  • OnGUI 方法:OnGUI 方法會造成較多的堆內存分配, 耗時也較高, 不建議使用。
  • 空的 Update 方法:空 Update 方法在運行依然會被調用, 導致額外的開銷, 建議去除。
  • 存在.tag 的調用:.tag 的使用會導致堆內存分配, 建議使用 CompareTag 進行替換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM