【Unity知识点详解】UI渲染排序总结

这篇文章主要总结一下Unity中UI的渲染排序。这里不涉及Particle在UI中的排序,关于Particle在UI中的排序问题在另外一篇文章中有单独介绍,链接在文章最后,感兴趣的小伙伴可以去看看。话不多说直接开始。

影响UI渲染排序的因素有以下这些:

  • UI对象在Hierarchy窗口中的顺序
  • Canvas中的Sort Order参数
  • Canvas中的Sorting Layer参数
  • Screen Space - Camera渲染模式下Camera中的Depth参数
  • Screen Space - Overlay渲染模式

上面列出的是影响UI渲染排序的因素,对UI渲染排序影响的优先级也是按从小到大排列的。下面就来逐一介绍一下。

 

UI对象在Hierarchy窗口中的顺序

当创建UI对象时,UI对象会被自动添加到Canvas下。在同一个Canvas下的UI对象会根据在Hierarchy窗口中从上到下的顺序进行渲染。放个配图这样能更直观的看到。

 

Canvas中的Sort Order参数

在上面例子的基础之上我们先为red、green两个Image对象添加Canvas组件,在Canvas中我们重新设置Sort Order值。我们将red设为1、green设为0,由于red、green上的Canvas组件重写了Sort Order值,渲染顺序进行了重新的排序。

如下图:

不只是UI对象的渲染排序会受Sort Order影响,不同的Canvas也会受Sort Order影响。如下图:

Canvas在渲染排序时会根据Sort Order参数的数值,按从小到大的顺序进行渲染。

 

Canvas中的Sorting Layer参数

Sorting Layer是用于指定对象的排序层,默认参数为Default。在Project Settings中可以添加新的Sorting Layer层,并且可以通过拖动调整先后顺序。这里我们新添加两个Layer层UI1、UI2,如下图:

接下来我们通过设置Sorting Layer来进行排序。继续上一个示例的基础上,将red设置为UI1,green设置为UI2。如下图:

虽然按照Order in Layer参数red应该在green的上面,但由于Sorting Layer渲染排序的优先级高于Order in Layer,所以现在green是在red的上面。不同Canvas之间也是如此,如下图:

Sorting Layer参数会根据自定义的Layer层,以从上到下的顺序进行渲染。

 

Screen Space - Camera渲染模式下Camera中的Depth参数

上面的例子都是在同一个Camera下渲染的,当有多个Camera同时渲染时,Camera中的Depth参数会对渲染排序产生影响。现在我们添加两个新的Camera,并将两个Canvas由两个不同的Camera进行渲染。如下图:

当多个Camera进行渲染排序时,根据Camera中Depth参数从小到大的顺序进行渲染。

 

Screen Space - Overlay渲染模式

最后来介绍一下Render Mode中的Screen Space - Overlay渲染模式,Overlay会将UI渲染到最顶层,覆盖其他所有渲染的内容。如下图:

 

关于影响UI渲染排序的因素就先介绍到这里,更多相关信息可以查阅官方文档。

https://docs.unity3d.com/2019.1/Documentation/Manual/class-Canvas.html

关于Particle和UI的排序可以查看另一篇文章。

https://blog.csdn.net/huoyixian/article/details/88075368

 

 

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值