Unity中的几种层级关系优先级总结

本文总结了Unity中的层级关系及其优先级:Camera的depth决定显示顺序,Sorting Layers通过sortingLayerName设置,Sorting Order通过数字大小决定层级,而renderQueue则通过Material的属性决定。在遇到层级遮挡问题时,可以参考提供的万能层级调整脚本解决,但要注意避免增加drawCall。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在项目中,我们经常需要处理显示对象的层级关系或规划层级结构,那么Unity中主要有哪些主要的层级关系及他们的优先级是怎么样的呢?

Camera

首先是Camera,Camera的depth值越大的在上面,越小的在下面,比如场景有一个相机,UI层有一个相机,那么我们就可以将场景相机的Depth设置成0,UI相机的Depth设置成1。UI就会高于场景显示了。

Sorting Layers

如果Camera相同,那接下来就看Sorting Layers,Sorting Layers是通过Renderer的sortingLayerName属性设置的,那么这个Sorting Layers的名字又是在哪设置,以及名字之间的顺序是怎么定的呢?这个Soring Layers是在Edit->ProjectSettings->Tags&Layers中设置的,如图:这里设置了Default和Effect两个Layers,Effect的层级比Default的高。
image
可以通过代码设置render.sortingLayerName=”Effect”,如果在粒子系统中看,可以看到Render项的Sorting Layers下拉表单中会列出所有的Sorting Layers的名字

sortingOrder

如果Camera相同,Sortin

### Unity 中 Canvas 与摄像机的层级关系Unity 中,Canvas 和 Camera 的层级关系对于 UI 渲染顺序至关重要。Canvas 组件用于定义用户界面 (UI) 元素的位置和行为,而 Camera 负责渲染场景中的对象。 #### Canvas 类型及其影响 存在三种类型的 Canvas: - **Screen Space - Overlay**: 此模式下的 Canvas 始终位于屏幕最顶层,不受任何相机的影响[^1]。 - **Screen Space - Camera**: 这种模式下,Canvas 需要指定一个关联的 Camera 来决定其位置。这种情况下,Canvas 将作为该特定 Camera 层级的一部分进行渲染。 - **World Space**: World Space Canvases 是实际存在于世界空间内的实体,并且可以像其他 GameObjects 一样受到光照和其他效果的影响。它们也依赖于某个 Camera 来显示出来。 为了确保正确的渲染顺序,在处理多个 Cameras 或者混合不同类型的 Canvas 时需要注意以下几点: - 对于 Screen Space - Camera 模式的 Canvas,应该调整 `Sorting Layer` 和 `Order In Layer` 参数以控制相对于同一 Camera 下其它物体的绘制优先级。 - 如果有多个 Cameras 同时工作,则可以通过设置各自的 Depth 属性来管理这些摄像头之间的前后次序;Depth 数值越低表示越靠近观察者的眼睛,即会先被渲染并覆盖后续更高 Depth 值的内容。 ```csharp // 设置Camera的depth属性 camera.depth = -1; // 更靠前的层 ``` 另外,关于 UGUI 的性能优化方面提到过,“当 Unity Profiler 运行的时候进行 enabling 和 disabling 的操作”,这可以帮助开发者快速找到潜在的性能瓶颈所在之处,特别是涉及到复杂 UI 结构的情况下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值