Unity遊戲優化(第三版) (Davide Aversa、Chris Dickinson 著)
Unity高級編程主程手記 (陸澤西 著)
腳本優化
- 模塊化
- 解偶
- 物件池
- 內存管理
- 減少GC
C#
- 遍例用List、映射用Dictionary
- foreach會產生新的迭代器(.net4.0已修復)
- 若追求浮點數精度,改為定點數運算
- 注意委託、事件
- 注意裝箱、拆箱
- 演算法
減少跨橋複製
- 加緩衝變數至幀末尾計算
unity對象空引用檢查
- if (gameobject != null)
- 減少跨域-跨橋複製
Transform很貴
- 會發通知影響物理渲染
- 跨域
單例與靜態
- 單例為唯一
- 靜態為共享訪問
- 單例不等於靜態
禁用未使用的腳本與對象
- 不在畫面內
- 距離過遠
最小反序列化行為
- 切塊
- 異步
- 共享數據
update很貴
- 增加假update層
- 跨域
渲染管線優化
減少drawcall優化CPU。
1 | drawcall : CPU => OpenGL => GPU |

動態批處理
- 合併成圖集去對應圖集UV
靜態批處理
- 把所有標示為靜態的物件合併成一個大的等待渲染網格
- 大的等待渲染網格吃內存
Mipmap
- 依照鏡頭距離選擇渲染紋理細節
Anisotropic Filtering
- 慎用傾斜角度紋理
合併紋理圖集
- 跟材質類似共享渲染在對應UV
- sprite atlas內建
程序化材質
- 減少磁碟容量
降低面數
- 法線紋理補充細節
合併網格
- 注意是否為重要長時可見網格
音頻優化
降低內存。減少CPU占比。
音頻加載
- 文件格式
- 加載方法
- 壓縮模式
- 最小化活動音源,合併音源(分動態環境音處理)
- 強制單聲道
- 低頻重新採樣低採樣率
- 音軌數據(重複性高的音樂可以拆成模塊組)