Unity性能优化方向
引擎优化
- 引擎渲染管线简化
- 引擎mipmap优化
- UI渲染管线分离
- Shader异步编译
- 引擎动画URO优化
- 引擎线程数量和堆栈优化
- IL2CPP元数据延迟装载优化
- 粒子相机外逻辑分帧优化
- 粒子面片CutOut优化
- 阴影缓存优化
业务优化
- 特效动态裁剪优化
- 战斗动态降档优化
- 资源LOD优化
- UI图集LOD优化
- 迷雾刷新分屏优化
- 相机内外特效优化
- TMP飘字渲染优化
- 团战音效裁剪优化
- 逻辑分帧优化
- 血条合批优化
其他优化
- 厂商绑核不降频优化
- 厂商CPU超频适配优化
优化类别
- 资产
- LOD(网格、纹理、特效、骨骼)
- 资产剥离
- 阴影
- 实时阴影缓存(局部更新)
- 投影阴影
- 静态烘培阴影
- 线程
- 双队列切换
- 环形Buff无锁
- 无锁容器
- 读写锁
- 减少临界区
- 调整线程间卡点时间
- 独立计算部分拆分成线程
- 绑核
- 减少引擎逻辑线程栈内存大小
- 根据设备限制job线程数量
- 网络
- 冗余发送
- 调整窗口大小
- 数据包切割
- 发包缓存筛选提高效率
- 弱网预表现
- UI
- 关闭IMGUI
- 定制层级
- 图集拆分
- 图集LOD
- 预制体LOD
- 动静分离
- 遮罩替换
- 节点复用
- 镂空绘制减少OverDraw
- 反转变色复用
- 降低UI相机分辨率
- 用RT减少重复绘制
- 低端机UI裁剪(特效、功能、描边)
- UI管线定制
- 小地图3DUI
- 2D动画
- 序列帧动画合批
- Live2D替换骨骼动画
- 粒子转帧动画
- IL2CPP
- 去除IL2CPP黑名单缓存
- 降低内存释放门槛
- 按需加载元数据
- 业务泛型代码裁剪优化
- IL2CPP空对象和数组越界检查的优化
- RTTI的数据冗余
- 减少反射调用
- 更换容器(更换为sprase_hash_map、bytell_hash_map)
- 去掉NativeSymbol调用容器
- 渲染
- Mipmap简化
- 渲染管线分离 UI、Main管线分离
- 渲染管线线程化
- 减少CommandBuffer缓存大小
- 简化低端机渲染管线
- SRP脏标记
- Shader
- 规范精简
- 精度变量优化
- 计算转移
- 离线计算结果存入纹理
- 预热
- 异步编译
- 动画
- 动画Job多线程
- GPU Instance skin
- 动画分帧
- 顶点动画
- Clip轨道简化
- 静态模型帧动画
- 弹簧骨骼代替Cloth飘带
- 冗余帧剔除(冗余关键帧、隔帧、插值、低精度、ACL压缩)
- 音效
- 音频资源LOD
- 团战实时音效裁剪(按范围和类型裁剪)
- 战斗
- 资产LOD(静态和动态)
- 渲染剔除算法(距离剔除、遮挡剔除、九宫格场景管理)
- 多物体渲染GPU Instance
- 动态分辨率
- 资源实例化预加载
- 裁剪(非主角裁剪)
- 非关键特效裁剪
- 相机外裁剪
- 相同特效裁剪
- 特效动态降档
- 团战屏蔽GC和资源卸载
- 内存错峰加载和卸载
- Loding提前预加载和预解析计算
- 模型
- 模型改广告牌
- 静态模型离线合批
- 自定义网格动态合批
- 粒子
- 粒子Cutout
- 粒子拖尾改逻辑拖尾
- 粒子转Mesh后LOD
- 粒子转帧动画
- 粒子逻辑分帧
- 血条飘字
- 裁剪(非主角)
- GPU Instance合批
- 逻辑动画替换动画
- 动态字体改静态
- 模型面片替换UGUI
- 业务逻辑
- 预加载
- 分帧
- Dirty机制
- 事件机制
- 缓存
- 对象池
- 离线预计算生成表格
- 统一Update
- 预扩容
- 字符串内存自定义管理
- 数据合并 指针偏移
- 地图与寻路
- SDF距离场
- 离线预计算导航点
- 权重导航
- 跳点寻路
- 跳点缓存
- 第三方SDK
- 战斗内关闭无关SDK
- 减少SDK线程池预存数量
- 厂商策略
- 掉核策略
- CPU和发热数据驱动性能适配功能
- 超频策略
- 编译优化
- -fomit-frame-pointer使用fp寄存器
- -o1、-o2、-o3优化力度
- __builtin_unreachable主动告知不会命中
性能工具
- SimplePerf
- 内存问题
- 快照
- 插桩
- 注入
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 孤独患者!
评论