83.性能优化-GPU-UI系统优化-其他UI系统优化方案
83.1 知识点
更多优化方案
1. 打图集(降低 DrawCall)
将 UI 图片打图集,使多个元素共用同一材质,便于合批。注意:布局时让不同图集的元素分层显示,避免穿插导致合批被打断。
2. 少用自带布局组件
UGUI 提供的自动布局组件包括 ContentSizeFitter(内容适配器)、Horizontal/Vertical Layout Group(水平/垂直布局组)、AspectRatioFitter(宽高比适配器)等。建议少用或不用,按需求自己写布局逻辑,便于控制更新时机和布局方式。
3. UI 元素关闭 Mipmap
只要不是 3D 世界空间 UI、没有距离远近变化,一般可以关闭 UI 贴图的 Mipmap,减少显存和采样开销。
4. 图集压缩
UI 图集选用合适的压缩格式,例如移动端使用 ASTC 或 ETC2,在保证清晰度的前提下降低内存占用。
5. 合理使用九宫格拉伸
仅在需要按比例做九宫格缩放的 UI 上启用九宫格,其余避免开启,减少不必要的计算。
6. 减少 OverDraw
尽量少让 UI 重叠显示,并减少半透明叠加。UI 本身多为多层堆叠,重叠难以完全避免,可以:
- 合并背景层:把装饰元素做到背景图里,减少一层层叠。
- 避免大面积半透明遮罩:例如不做半透明暗化,改用一张暗化图或实时模糊 Shader 等方式实现。
此外还有很多细节可根据项目再优化。
Unity 官方优化文档
UGUI 源码
源码仓库:https://github.com/Unity-Technologies/uGUI
阅读 UGUI 源码可以:
- 理解 UGUI 的工作原理。
- 根据原理制定优化策略。
- 学习其设计思路。
- 提升排查与调试能力。
- 便于做定制和扩展。
- 提升就业竞争力。
83.2 知识点代码
Lesson83_性能优化_GPU_UI系统优化_其他UI系统优化方案.cs
public class Lesson83_性能优化_GPU_UI系统优化_其他UI系统优化方案
{
#region 知识点一 更多优化方案
#region 1.打图集(降低DrawCall)
//将UI图片元素打图集,从而保证元素使用材质相同,达到批处理作用
//注意:
//布局时,不同图集之间元素分层显示,避免打断合批处理
#endregion
#region 2.少用自带布局组件
//UGUI中提供自动布局组件
//比如:
//ContentSizeFitter(内容适配器)
//Horizontal/Vertical Layout Group(水平、垂直布局组)
//AspectRatioFitter(宽高比适配器)
//等等
//建议少用或者不用这些组件
//布局相关逻辑自己根据需求实现
//可以有效控制更新时机,布局方式
#endregion
#region 3.UI元素关闭Mipmap功能
//对于大部分情况下
//只要不是3D UI元素,存在距离变化
//可以关闭Mipmap功能
#endregion
#region 4.图集压缩
//UI图集可以选择合适的Unity自带压缩格式
//比如移动端使用ASTC或ETC2,可以有效降低内存并保持清晰度
#endregion
#region 5.合理使用九宫格拉伸
//只有需要保持比例进行9宫格缩放的UI元素再启用该功能
//避免不必要的开销
#endregion
#region 6.减少OverDraw
//尽量少让UI元素重叠显示
//并且减少半透明效果的使用
//但是UI界面基本上是元素堆叠而成的,因此很难减少重叠
//我们可以使用以下方案避免:
//1.合并背景层,把一些装饰性元素直接和背景图做在一起
//2.避免大面积半透明遮罩,比如不使用半透明实现暗化效果
// 而是直接使用一张暗化图片代替,或是使用实时模糊的Shader
//等等
#endregion
//等等
#endregion
#region 知识点二 Unity官方优化文档
//1.优化Unity用户界面:
// https://learn.unity.com/tutorial/optimizing-unity-ui
//2.Unity UI优化技巧:
// https://unity.com/cn/how-to/unity-ui-optimization-tips
#endregion
#region 知识点三 UGUI源码
//下载地址:https://github.com/Unity-Technologies/uGUI
//我们可以探究UGUI源码
//可以给我们带来以下好处:
//1.理解UGUI工作原理
//2.基于原理制定优化策略
//3.学习借鉴UGUI设计思想
//4.提升调试能力
//5.便于定制和拓展功能
//6.提升就业竞争力
//等等
#endregion
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com