在Unity引擎中,UI元素可以使用不同的渲染模式,包括屏幕空间覆盖(Screen Space-Overlay)、屏幕空间相机(Screen Space-Camera)和世界空间(World Space)。
屏幕空间覆盖(Screen Space-Overlay)※
在屏幕空间覆盖模式下,UI元素会被绘制到屏幕上,不受摄像机或摄像机剔除层的影响。这意味着无论摄像机的位置如何,UI元素都会始终显示在屏幕的最上层。此模式下的Canvas排序按照Canvas组件的sort order进行排序,数值越大的元素会显示在更上层。而且,如果屏幕大小或分辨率发生变化,Canvas会自动调整大小。
屏幕空间相机(Screen Space-Camera)※
在屏幕空间相机模式下,UI元素会被放置在相对于摄像机的位置上。这意味着UI元素会受到摄像机参数的影响,同时也具有真正的Z轴。如果UI元素不在摄像机的裁剪空间内,则无法显示。此模式下的Canvas没有sort order,而是使用sorting layer和order in layer进行排序。当两个Canvas设置完全一样,其下的z也一样时,渲染顺序会变得复杂,此时根据Canvas的z轴值,z越大的元素会显示在下层。
世界空间(World Space)※
在世界空间模式下,UI元素按照3D空间的表现来渲染,主要用于实现3D UI效果。
渲染排序※
在屏幕空间相机模式下,渲染排序受到多个因素的影响。摄像机的Depth越大,越显示在上层。在相同Depth情况下,Canvas所在的sorting layer不同,层级越下,越显示在上层。而在sorting layer相同的情况下,order in layer不同的元素,值越大,越显示在上层。如果出现两个Canvas设置完全一样,其下的z也一样的情况,根据Canvas的z轴值,z越大的元素会显示在下层。
PS:在 Unity 中,Canvas 是用于呈现 2D UI 元素的重要组件。Canvas 允许你在屏幕空间中放置 UI 元素,并控制它们的外观和行为。以下是 Canvas 的一些常见属性及参数的解释:
- Render Mode (渲染模式):
- Screen Space - Overlay: Canvas 将覆盖在场景的上方,不会随着相机的移动而移动。
- Screen Space - Camera: Canvas 将渲染到指定的摄像机上,可以通过设置 Plane Distance 来控制 Canvas 距离摄像机的距离。
- World Space: Canvas 将作为 3D 对象存在,可以在场景中移动和旋转。
- Plane Distance (平面距离):
- 当 Canvas 的 Render Mode 设置为 Screen Space - Camera 时,可以通过设置 Plane Distance 来控制 Canvas 距离摄像机的距离。
- Sort Order (排序顺序):
- 控制 Canvas 在屏幕空间中的渲染顺序,值越大的 Canvas 将会覆盖值较小的 Canvas。
- Reference Resolution (参考分辨率):
- 用于指定设计 UI 时所参考的分辨率。在不同分辨率下,Canvas 可以根据参考分辨率进行缩放以适应屏幕。
- Scaler Match Mode (缩放匹配模式):
- Match Width or Height: 根据屏幕的宽度或高度进行缩放,另一方向会出现空白区域。
- Expand: 按照参考分辨率进行缩放,不会出现空白区域,但可能会变形。
- UI Scale Mode (UI 缩放模式):
- Constant Pixel Size: UI 元素的大小将保持不变,不会随着屏幕的缩放而改变。
- Scale with Screen Size: UI 元素的大小将根据屏幕的缩放而改变。
- Reference Pixels Per Unit (参考像素每单位):
- 用于指定设计 UI 时的像素比例,影响 UI 元素在屏幕上的大小。
- Pixel Perfect (像素完美):
- 当启用时,UI 元素将会以像素为单位进行渲染,适用于像素风格的游戏。