先抛个结论在前面:
Mask / RectMask2D 其实是一种“带规则的画图方式”。
如果你强行把它们跟普通 UI 当成一样的东西合批,
结果通常只有两个:
要么画错,要么花屏,要么什么都看不见。
就好比你在墙上刷漆,本来应该:
- 先贴好遮挡胶带(Mask)
- 再在允许的区域刷漆
你现在为了省事说:
“别讲究那么多,胶带、墙面、家具一起随便刷,能合就合。”
那刷完的效果,你敢想象吧。
这篇我们就用大白话,
从“GPU 是怎么干活的”这个底层角度,一步一步拆给你看:
- Mask / RectMask2D 本质在干嘛?
- 它们为什么正常情况就要打断合批?
- 如果你硬说“我不,我要强行合批”,会出现什么具体问题?
- 这些问题在游戏里会表现成什么样的 bug?
- 为什么 Unity 官方宁愿多一点 DrawCall,也绝对不这么做?
一、快速回顾:Mask / RectMask2D 到底在干嘛?
先把 Mask / RectMask2D “翻译成人话”。
1.1 Mask:拿“模板缓冲”画一块只能在里面上色的区域
Mask(配合 Image)干的事情大概是:
先在屏幕上