83.其他UI系统优化方案

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 本身多为多层堆叠,重叠难以完全避免,可以:

  1. 合并背景层:把装饰元素做到背景图里,减少一层层叠。
  2. 避免大面积半透明遮罩:例如不做半透明暗化,改用一张暗化图或实时模糊 Shader 等方式实现。

此外还有很多细节可根据项目再优化。

Unity 官方优化文档

UGUI 源码

源码仓库:https://github.com/Unity-Technologies/uGUI

阅读 UGUI 源码可以:

  1. 理解 UGUI 的工作原理。
  2. 根据原理制定优化策略。
  3. 学习其设计思路。
  4. 提升排查与调试能力。
  5. 便于做定制和扩展。
  6. 提升就业竞争力。

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

×

喜欢就点赞,疼爱就打赏