画布(Canvas)是容纳所有 UI 元素的区域。画布是一种带有画布组件的游戏对象,所有 UI 元素都必须是此类画布的子项。
创建新的 UI 元素时,如果场景中还没有画布,则会自动创建画布。UI 元素将创建为此画布的子项。
消息系统:如果当前场景中没有EventSystem组件,新建UI元素时会同时创建出来一个带EvenetSystem组件的物体,用来协助消息系统。EvenetSystem是一个基于Input的事件系统,可以对键盘、触摸、鼠标、自定义输入进行处理。
绘制元素的顺序
画布中的 UI 元素按照它们在 Hierarchy 中显示的顺序绘制。首先绘制第一个子项,然后绘制第二个子项,依此类推。如果两个 UI 元素重叠,则后一个元素将显示在前一个元素之上。
要更改元素的显示顺序,只需在 Hierarchy 中拖动元素进行重新排序。也可以通过在变换组件上使用以下方法从脚本控制顺序:SetAsFirstSibling、SetAsLastSibling 和 SetSiblingIndex。
Screen Space Overlay
让UI始终位于界面最上面部分。此渲染模式将 UI 元素放置于在场景之上渲染的屏幕上。如果调整屏幕大小或更改分辨率,则画布将自动更改大小来适应此情况。
- Pixel Perfect(仅限 Screen Space 模式):完美像素,边缘更加清晰(显示内容的像素和平面像素对应,没有拉伸和压缩),会降低流畅度,使元素看起来更清晰并防止模糊
- Sort Order: 渲染顺序,多个Canvas时可以调整其显示顺序,绘制的时候从小到大依次绘制,越大越靠近相机,用于不同界面的层级控制。
- Target Display:目标显示器,Unity多开时选择显示器用
- Additional Shader Channels:附加着色通道,决定Shader可以读取哪些相关数据,比如 法线、 切线、颜色、等数据。
Screen Space - Camera
赋值一个相机,按照和相机的距离前后显示物体和UI。此渲染模式类似于 Screen Space - Overlay,但在此模式下,画布放置在指定摄像机前面的给定距离处。UI 元素由此摄像机渲染,这意味着摄像机设置会影响 UI 的外观。如果摄像机设置为正交视图,则 UI 元素将以透视图渲染,透视失真量可由摄像机视野控制。如果调整屏幕大小、更改分辨率或摄像机视锥体发生改变,则画布也将自动更改大小来适应此情况。
- Render Camera:用哪个相机来渲染
-
Plane Distance:当Camera的Projection为Orthograhic(正交投影)时,此值得改变仅仅会改变Canvas的Pos Z
-
Sorting Layer:管理多个Canvas,将它们组织为不同层级来形成覆盖关系,越大越靠前。
-
Order in Layer:对于同一Sorting layer之下的几个Canvas,越大越靠前、
显示的前后关系:
- 首先看RenderMode 如果Screen Space Overlay会在最前面。
- 如果两个都是Screen Space - Camera,首先看Sorting Layer,这个越大越靠前。
- Sorting Layer相同的,比较Order in Layer越大越靠前。
World Space
在此渲染模式下,画布的行为与场景中的所有其他对象相同。画布大小可用矩形变换进行手动设置,而 UI 元素将基于 3D 位置在场景中的其他对象前面或后面渲染。此模式对于要成为世界一部分的 UI 非常有用。
对应操作视频讲解:https://www.bilibili.com/video/BV1D44y127qS?from=search&seid=16920894502183582417