NGUI Sprite 镜像填充模式扩充

ABSTRACT

侑虎科技(UWA)2017 年文章(郑明磊)。针对 UI 资源量大的老问题,扩展 NGUI 的 UIBasicSprite.cs,实现 Simple/Sliced 的左右镜像与 Simple 十字镜像三种新填充类型:美术只出半张/四分之一张图,运行时镜像绘制,资源量至少减半,代价是少量顶点增加。

核心要点

  • 动机:NGUI 自带 UISprite 只有 Simple 拉伸、Tiled 平铺、Sliced 九宫三种填充,无法表达项目中常见的左右对称、十字镜像需求,美术只能出整图。
  • 扩展点:Sprite 填充逻辑集中在 UIBasicSprite.cs(UITexture 也走同一套逻辑,因此扩展对其同样生效);新增 Type 枚举 + 对应填充函数即可。
  • 三种新模式:Simple 左右镜像(出左半图)、Sliced 左右镜像(出九宫左半图,Atlas 里做好九宫裁剪)、Simple 十字镜像(出左上四分之一图)。
  • 成本收益:镜像绘制增加少量顶点,性能损失微小;UI 贴图资源量至少减半——典型的「以少量性能换大量内存」。
  • 可继续扩展:上下镜像、平铺镜像等,按项目需求添加。

关键实体与概念

NGUI、UISprite、UIBasicSprite、Sprite Fill Type、Sliced 九宫、Atlas、镜像绘制、顶点换内存

关联概念

来源回溯

  • 原始文件:raw/gamedev/ngui-sprite镜像填充模式扩充.md(evernote/FW-游戏3研发技术 导入)

时效性评估

  • 仍有效:「对称图形只存一半、绘制时镜像」「九宫复用」的减资源思路是通用的 UI 优化直觉,UGUI Image 的 Sliced/Tiled 与自定义顶点绘制同样适用。
  • 已过时:NGUI 本身已被 UGUI / FairyGUI 取代;UGUI 下等价做法是继承 MaskableGraphic 重写 OnPopulateMesh 自绘顶点。