Scroll Rect组件
- Content指向的是能用鼠标拖动的物体。Viewport指向的是限定Content能移到的范围的物体。
- Content指向的物体还必须是Scroll Rect所属物体的子物体才能拖动
- 如果Viewport指向的物体完全包围了Content,则拖动后松开鼠标,Content会自动回到Viewport的中心。(设计者的意图是显示区域已经完全够显示Content了,所以无需拖动)而且此时下面说的Viewport对Content移动范围的限制会失效,只要不松鼠标,能一直拖直到鼠标到屏幕边界。
- Content最往下能移到Content的上边缘和Viewport的上边缘对齐,其他边缘同理。如下图,Content是淡白色区域,Viewport是红色块,在勾选Horizontal和Vertical的情况下Content的移动范围如图。Content的移动范围其实和Scroll Rect所属物体的区域没有关系。鼠标在Scroll Rect所属物体的区域(淡黑色区域)或Content内按下都能拖动Content。
Mask组件
- 需要同时挂载一个Image组件才有用,只显示Image区域的子物体。Mask不会影响鼠标按下能拖动的区域。
- 以上两个组件中一共出现了3种范围,分别是Content可移到的范围,鼠标按下可拖动的范围,显示Content的范围。一般来说,3个范围应该一致,使用起来才不感觉奇怪。
Grid Layout Group组件
自动制表的组件。会令所有子物体的大小、位置不能调整,统一由这个组件调整。
Content Size Fitter组件
会改变所属物体的长宽,依据是它的子物体所占据的区域。
Image组件
Color
Color是和Source Image的RGB相乘,所以白色*蓝色=蓝色,红色*蓝色=黑色
Material
UI/Default着色器、模板测试
带stencil是模板测试相关的参数。
模板测试的参考文章:
UNITY的Mask的替代用法 - 知乎 (zhihu.com)
技术美术百人计划 | 《3.1深度测试与模板测试 》笔记_unity 模板测试-CSDN博客
UI元素的渲染顺序是Hierarchy从上到下,模板测试阶段会拿这个元素材质的Stencil ID和Stencil缓冲区里的值比较,根据Stencil Comparison给出的判断标准判断模板测试是否通过。
这篇文章里【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)_unity 开镜-CSDN博客
定义了一个镂空材质:
一个背景材质:
并把镂空放在上面:
RectTransform几个字段的含义
anchorMax和anchorMin
选择中间的9种单锚点模式时,anchorMax和anchorMin一样,是此锚点在父物体里的归一化坐标。选择6种双锚点模式和4锚点模式时,anchorMin是偏左下的锚点的归一化坐标,anchorMax是偏右上的锚点的归一化坐标。
如选中间的anchorMax和anchorMin都是(0.5,0.5),选左上都是(0,1)
sizeDelta
x是面板的宽度和锚点之间x距离的差值。对于单锚点,锚点之间x距离是0,sizeDelta.x就是面板宽度;对于左右双锚点,如果锚点在左右边缘,那么面板和屏幕同宽的时候,sizeDelta.x是0,屏幕宽1920,面板左边和屏幕左边对齐,右边在屏幕右边480,那么sizeDelta.x是480.y同理。