1. 程式人生 > >Unity優化總覽

Unity優化總覽

ring mipmap protobuf 獲取 匿名函數 日誌 draw 格式 外部變量

CPU


GC

  • 序列化與反序列化,如protobuff,json解析
  • String的頻繁構造,拼接,如ToString()會生成字符串,Object.name會返回拷貝
  • 閉包和匿名函數,在閉包中調用外部變量時會創建臨時class對象,匿名函數當做參數傳入時,也會有內存開銷
  • 有開銷的函數,如Camera.main等,緩存一下
  • Transform只存局部坐標,旋轉,沒次獲取和設置都有計算開銷

IO操作,

  • debug系列日誌函數,打包並不會自動屏蔽

UI

  • Canvas重建,材質的重新創建,排序,Mesh重建等,建議全部動靜分離
  • 圖集劃分問題,圖片尺寸要用POT尺寸

其他

  • 粒子系統 -> 功能簡化的簡單子彈類
  • 動畫更新優化,放到子線程等
  • GPU Instance
  • 蒙皮計算 GPU skinning
  • 物理 MeshCollider改為凸包

GPU


數據量

  • 頂點數: LOD
  • 紋理尺寸: 打開mipmap
  • overdraw: 主要透明物體數量

Shader算法

  • 數據精度
  • 紋理數目
  • 比較費的函數: grappass,for

內存


  • Mesh的Read/Write選項(會存在雙份數據)
  • 紋理最大尺寸,壓縮參數 (硬件支持的壓縮,會以壓縮格式進內存)

包大小


  • 一個bug(長期未修復):場景中的物體prefab打成包,場景包中還會有一份資源,需要打成更細的包,比如貼圖,就不會

其他


  • 物理: 關閉某些不需要檢測的層之間的碰撞

Unity優化總覽