Unity優化總覽
阿新 • • 發佈:2018-12-07
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優化總覽