mask和RectMask2D区别

时间:2022-09-23
本文章向大家介绍mask和RectMask2D区别,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. Mask遮罩的大小与形状依赖于Graphic,而RectMask2D只需要依赖RectTransform

2. Mask支持圆形或其他形状遮罩, 而RectMask2D只支持矩形

3. Mask会增加drawcall

4、mask的性质:
性质1:Mask会在首尾(首=Mask节点,尾=Mask节点下的孩子遍历完后)多出两个drawcall,多个Mask间如果符合合批条件这两个drawcall可以对应合批(mask1 的首 和 mask2 的首合;mask1 的尾 和 mask2 的尾合。首尾不能合)
性质2:计算depth的时候,当遍历到一个Mask的首,把它当做一个不可合批的UI节点看待,但注意可以作为其孩子UI节点的bottomUI。
性质3:Mask内的UI节点和非Mask外的UI节点不能合批,但多个Mask内的UI节点间如果符合合批条件,可以合批。
5、RectMask2D不能和外部ui合批,也很难和其他RectMask2D内部的ui合批(一般默认不能)

用哪个:
1、如果非矩形则只能使用mask

2、如果canvas下只有需要一个遮罩则使用RectMask2D

3、如果canvas下只有需要多个遮罩需要判断是否可以合批,可以使用FrameDebug工具确认

4、RectMask2d每帧计算裁剪区域,所以当item过多的时候,每个item计算对于耗时会有一定影响。item少的时候可用

使用场景:

1、滚动列表

2、Dropdown

3、界面滑动显示隐藏遮罩

PS:

个人还是建议使用Mask,虽然Mask会多两个DrawCall。

1、如果使用RectMask2D还需要考虑界面最终是否有多个可合并的遮罩,

2、现在ui界面被遮挡不会setActive(false),所以ui里的RectMask2D还会一直CPU计算,除非手动关闭

参考网址:

https://www.cnblogs.com/iwiniwin/p/15191362.html

http://www.codebaoku.com/it-csharp/it-csharp-215989.html

原文地址:https://www.cnblogs.com/wangle/p/16721848.html