# UGUI优化
- HUD刷新
	- 可以在代码逻辑中做一定的延迟
- 颜色不同导致无法合批
	- 可以用MaterialPropertyBlock解决
	- UGUI的shader中虽然有顶点颜色，但是却从来没有使用过，提交顶点颜色也依赖CanvasRender，无法使用顶点色
- Canvas下**网格的变化**会引起**Canvas.BuildBatch的调用**
	- 減少Canvas下网格顶点的变换，例如UI元素的**Transform变动**
- 合并批次
	- **无法合批**的情况
		- 不同Canvas|图集交叉|深度交叉
		- 同一个Canvas，同一图集深度，但无法合批的情况
			- **动态合批未通过：超过顶点限制，缩放不为1**
			- 对于Alpha为0的Image，需要勾选其CanvasRender组件上的Cull Transparent Mesh选项，否则依然会产生DrawCall且容易打断合批。

- FGUI的处理方式
	- 自动合并相邻组件
		- UGUI无法做到的原因是因为依赖底层的动态合并以及静态合并，但FGUI只处理UI
	- 顶点数据重组
		- 将多个组件的顶点UV颜色数据合并到单个顶点缓冲区，一次性提交到GPU
	- 文本处理：
		- 将某几个字的纹理和图片的纹理打到同一个图集
		- 动态变更字体的时候，往图集里更新新的字体，避免发生材质重建
		- 颗粒度不同
			- UGUI的Canvas下元素被设置Dirty后会导致整个CanvasReBuild
			- FGUI的局部更新更高效

## 改变颜色是否能合批的本质原因
- UGUI 将颜色存储在材质属性层级
+ FGUI 将颜色存储在顶点数据层级

## FGUI的字体与图片合批
- FGUI的字体图片合批
	本质是Texture2DArray，字体纹理与图集纹理形成
	- 字符纹理生成
		- 与动态图集差不多
		- 申请一张512\*512的贴图
		- 如果动态图集里没有这个字的图，调用系统字体渲染API
		- 写入数据兵返回uv顶点数据