目录
在讲解这个上面应用之前需要先了解Clear Flag:
"Clear Flags"是相机组件的一个设置,它决定了每次渲染之前相机如何清除其视口。这个设置主要用于确定在开始渲染当前相机的视图之前,应如何处理之前渲染的内容。这对于渲染的正确性和视觉效果都非常重要。
Unity提供了几种不同的Clear Flags选项,每种都有不同的用途:
Skybox:
Solid Color:
Depth only:
Don't Clear:
在UI复杂的应用中,可能需要一个相机来渲染3D世界,另一个相机来渲染UI。通过设置不同的深度值,可以确保UI始终渲染在3D世界之上。
1. 创建并设置3D世界相机
首先,你需要一个相机来渲染3D世界:
Clear Flags
设置为Skybox
(如果有天空盒)或Solid Color
(如果没有天空盒)。Depth
值为较低的值,例如0
。这将是用来渲染3D场景的主相机。2. 创建并设置UI相机
接下来,创建一个专门用于渲染UI的相机:
Clear Flags
设置为Depth only
。这样,它就不会清除主相机的渲染结果,而只负责渲染UI元素。Depth
值为比3D世界相机更高的值,例如1
。这确保UI相机在3D世界相机之后渲染,从而UI元素会显示在3D场景之上。Culling Mask
以仅渲染UI层(或者你放置UI元素的特定层)。这样,UI相机不会渲染3D世界中的对象。3. 配置UI元素
确保你的UI元素(如Canvas)配置为使用UI相机:
Canvas
对象。Render Mode
属性中选择Screen Space - Camera
。Camera
属性。它允许开发者控制2D对象(如Sprite和UI元素)的渲染顺序。Sorting Layer
主要用于确定哪些对象应该先绘制,哪些对象后绘制,从而实现不同2D元素之间的正确层叠和遮挡关系。
(SortingLayer只针对于2D的物体)
同一SortingLayer下的还可以通过order In Layer来设置先后的顺序。
在不同Sorting Layer
之间,渲染顺序是根据Sorting Layer
在项目设置中的排列顺序决定的,列表中越上面的Sorting Layer
越先渲染。
Order in Layer
值较小的对象会先于值较大的对象渲染,从而在视觉上出现在后者的后面。
如果Sorting Layer
和Order in Layer相同,
在Hierarchy窗口中更靠下的对象会被渲染在更靠前的对象之上。
在Unity中,Render Queue(渲染队列)是一个用于决定材质和着色器在渲染过程中的顺序的属性。每个材质都有一个与之关联的Render Queue值,这个值决定了材质在渲染管线中的位置,从而影响渲染的顺序。
决定渲染顺序:
处理透明度:
Unity中的Render Queue被分为几个预设范围:
含义:
透明物体的渲染
1.Camera Depth: 越小越优先
2.RenderQueue 2500以下
1. Sorting Layer/Order in Layer
1. 按照Sorting Layer/Order in Layer 设置的值,越小越优先
2. 无此属性,等同于 Sorting Layer=default ,Order in Layer=0 参与排序
2.RenderQueue 越小越优先
3.RenderQueue 相等,由近到远排序优先
3.RenderQueue 2500以上