你是不是也遇到过这种迷惑时刻:
- 一个看起来很普通的 UI 界面:几张图片、几段文字、几个按钮;
- Profiler 一开:DrawCall(批次)多得离谱;
- Frame Debugger 一看:一条一条被切得稀碎;
- 明明材质也尽量统一了,图集也打了,怎么还是“合批失败”?
然后你到处查:
别人都在说“渲染顺序会打断合批”。
可渲染顺序具体是个啥?
为什么顺序一乱,合批就裂开?
层级、Z 值、Canvas、排序层、Mask……这些东西到底是怎么一起捣乱的?
这篇就准备用大白话,
专门聊清楚一件事:
渲染顺序,是怎么一步一步把你的合批拆碎的?
并且我们重点放在 Unity UGUI / 通用 2D UI 的场景,
因为那是最容易被渲染顺序“坑死”的地方。
一、先搞清楚:渲染顺序到底是什么“顺序”?
先别管 Unity、别管 API,
先想象:
你拿一支画笔在纸上画一堆东西:
- 先画背景色(整张纸涂蓝);
- 再画一棵树;
- 再画一个人;