Files
obsidian-notes/3Resources/游戏开发/性能优化/性能优化-面试.md
zzzisfunnyboy 76a4f2a746 7.24 家
2025-07-24 00:13:02 +08:00

1.3 KiB
Raw Blame History

  • UGUI

    • 降低UI刷新的频次
      • HUD刷新
        • 可以在代码逻辑中做一定的延迟
      • 颜色不同会导致无法合批
        • 可以用MaterialPropertyBlock解决
    • Canvas下网格的变化会引起Canvas.BuildBatch的调用
      • 解決
        • 減少Canvas下网格顶点的变换例如UI元素的Transform变动
          • FGUI的处理方式
            • 自动合并相邻组件
              • UGUI无法做到的原因是因为依赖底层的动态合并以及静态合并但FGUI只处理UI
            • 顶点数据重组
              • 将多个组件的顶点UV颜色数据合并到单个顶点缓冲区一次性提交到GPU
            • 文本处理:
              • 将某几个字的纹理和图片的纹理打到同一个图集
              • 动态变更字体的时候,往图集里更新新的字体,避免发生材质重建
            • 颗粒度不同
              • UGUI的Canvas下元素被设置Dirty后会导致整个CanvasReBuild
              • FGUI的局部更新更高效
    • TextMeshPro

  • 合并批次

    • 问题
      • 无法合批的情况
        • 不同Canvas|图集交叉|深度交叉
        • 同一个Canvas同一图集深度但无法合批的情况
          • 动态合批未通过超过顶点限制缩放不为1
          • 对于Alpha为0的Image需要勾选其CanvasRender组件上的Cull Transparent Mesh选项否则依然会产生DrawCall且容易打断合批。