文章摘要
NGUI渲染管线通过类协作高效处理UI渲染:UIWidget生成顶点数据并通知UIPanel;UIPanel按材质合批顶点数据,生成Mesh;UIDrawCall负责提交渲染。该机制通过合批减少DrawCall,支持动态UI更新,并适配多分辨率。核心流程为:UI变更触发重建→UIPanel收集数据→按材质分组→生成Mesh→提交渲染,实现高性能UI显示,适用于复杂界面如背包系统(100个格子仅需1-2次DrawCall)和动态弹窗。
一、NGUI渲染管线原理——“快递分拣中心”比喻
想象一下,NGUI就像一个快递分拣中心,负责把各种UI元素(按钮、图片、文字等)高效地打包、分拣,然后统一送到玩家面前。
1. UIWidget:快递包裹
每一个UI控件(比如按钮、图片、进度条)就是一个包裹,它们都继承自UIWidget
。每个包裹有自己的内容(图片、文字)、大小、位置等信息。
2. UIPanel:分拣区
NGUI把所有包裹先送到分拣区(UIPanel
)。每个UIPanel负责一批包裹的收集和打包。
- 同一个UIPanel里的包裹,会被尽量合并打包(合批),减少运输次数(DrawCall)。