画布Canvas

属性

Render Mode 渲染模式: UI 在屏幕上或作为 3D 空间对象进行渲染的方式。提供的选项包括 Screen Space - Overlay、Screen Space - Camera 和 World Space。
Pixel Perfect :(仅 Screen Space 模式):是否要无锯齿精确渲染UI
Render Camera (仅Scene Space -- Camera):UI渲染相机
Plane Distance (仅Scene Space -- Camera):UI与相机之间的距离
Event Camera  (World Space):处理UI事件的相机

画布渲染模式

1.Scene Space -- Overlay(屏幕空间 - 覆盖)

全覆盖屏幕,画布下的全部UI元素都在屏幕的最上层,画布会进行缩放来适应屏幕,然后直接渲染而不参考场景或摄像机(即使场景中根本没有摄像机,也会渲染 UI)。如果更改屏幕的大小或分辨率,则 UI 将自动重新缩放进行适应(可以通过设置UI元素的锚点来设定位置)。

2.Scene Space -- Camera(屏幕空间 - 摄像机)

需要指定渲染摄像机并由指定摄像机进行渲染,画布放在摄像机前面并距离摄像机有一定的距离,UI元素大小不会随离相机的距离改变。因为 UI 始终会重新缩放来准确适应摄像机视锥体。场景中比 UI 平面更靠近摄像机的所有 3D 对象都将在 UI 前面渲染,而平面后的对象将被遮挡。

3.World Space(世界空间)

制作场景中的UI,将UI元素视为场景中的一部分,有一个单独的参数 Event Camera 用来指定接受事件的摄像机。画布的大小可以使用矩形变换来设置,但画布在屏幕上的大小将取决于摄像机的视角和距离(如果相机的投影模式为正交则大小不会改变)。其他场景对象可以位于画布后面、穿透画布或位于画布前面。

Canvas 的Canvas Scaler

对于设置为“Screen Space - Overlay”或“Screen Space - Camera”的画布,画布缩放器 UI Scale Mode 可以设置为 Constant Pixel Size,Scale With Screen Size 或 Constant Physical Size。

1.Constant Pixel Size

固定像素尺寸 ,在任何分辨率下像素保持不变,可以通过“Scale Factor”向画布中的所有 UI 元素设置并应用常量缩放。

2.Scale With Screen Size

可以根据指定的参考分辨率(Reference Resolution)的像素来指定位置和大小,如果当前屏幕分辨率大于参考分辨率,则画布会保持只具有参考分辨率的分辨率,但是会放大以便适应屏幕,如果当前屏幕分辨率小于参考分辨率,则画布会相应缩小以适应屏幕。(UI显示不变)。
如果当前屏幕分辨率的宽高比与参考分辨率的宽高比不同,则单独缩放缩放每个轴以适应屏幕这样会导致缩放不均匀,这通常是不希望的。相反,参考分辨率将使 Canvas 分辨率偏离参考分辨率,以符合屏幕的宽高比。可以使用屏幕匹配模式设置(Screen Match Mode)来控制此偏差的表现方式。
Match Width Or Height: 下面包含一个Match属性,当处于最左边时,屏幕高度对于UI大小完全没有任何影响,只有宽度会对UI大小产生影响。假设屏幕宽度为参考分辨率宽度的x倍,则UI整体缩放为x倍。也就是说只有屏幕宽度等于参考分辨率宽度时,才能做到完美像素,否则像素就会有拉伸。当处于最右边时,与上述情况正好相反,决定整体缩放值的是高度,而宽度则没有任何影响 ,处于中间某处时,对上述两者的影响进行权重加成 。所以一般把Macth一般设置为0.5(0.618)
例:当只要宽度对UI有影响:

仅高度


宽与高

* Expand 缩放不剪切:当屏幕分辨率与设定不同时,选择变化较小的一个方向(横向还是纵向),进行缩放显示 ,它会保证设计时分辨率能显示出来的缩放后依然能显示出来。
* Shrink 缩放剪切:当屏幕分辨率与设定不同时,选择变化较大的一个方向(横向还是纵向)进行缩放显示,对于超出的部分剪切不显示。

3.Constant Physical Size

保持物理尺寸,按物理单位(如毫米、点或派卡)指定 UI 元素的位置和大小。此模式要求设备正确报告其屏幕 DPI。对于不报告 DPI 的设备,可以指定回退 DPI。

UI自适应

1.设置UI元素的锚点来适应不同的宽高比,当前屏幕分辨率与画布的参考分辨率相同

默认情况下,UI 元素锚定到父矩形的中心。这意味着它们与该中心保持恒定的偏移,更改分辨率,则元素可能甚至不再位于屏幕的矩形内。
一种将元素保持在屏幕内的方法,将元素的锚点绑定到屏幕的角上。(通过锚定可以让子项随父项的宽度或高度一起拉伸。矩形的每个角与其对应的锚点都有一个固定的偏移)

2.分辨率发生变化时,使元素随屏幕大小变化,使用Canvas Scaler组件

前提:当分辨率发生变化时,如果为元素设定了锚点位置,其相对位置不会改变,但是元素的大小不会随分辨率变化而变化。
使用Canvas Scaler  Screen Match Mode中的Match Width Or Height属性
我们将Canvas Scaler设置为参考分辨率 640 x 960。现在,屏幕分辨率设置 320 x 480 时,整个布局将按比例缩小,从而保持与全分辨率相同的比例。一切都按比例缩小:元素大小、元素到屏幕边缘的距离。这意味着在不同分辨率下的布局相同;只是像素密度降低而已。

Match Width Or Height中的Match属性属性值可以是 0(宽度)、1(高度)或介于两者之间的值。默认情况下设置为 0,表示将当前屏幕宽度与参考分辨率宽度进行比较。如果 Match 属性设置为 0.5,则会将当前宽度与参考宽度做比较并将当前高度与参考高度做比较,并选择两者之间的缩放因子。