在Unity的UGUI系统里使用Renderer的显示层级研究 (零) 总结

这是针对SpriteRenderer、3d物体和canvas的三篇测试进行一下总结,如果需要查看测试过程,可以分别点击下面的链接:
在Unity的UGUI系统里使用Renderer的显示层级研究 (一)
在Unity的UGUI系统里使用Renderer的显示层级研究 (二)
在Unity的UGUI系统里使用Renderer的显示层级研究 (三)

注意,所有的内容都在不使用特殊shader的前提下进行测试。

一、 测试关系的思维导图

我对所有的测试进行了一个思维导图的总结,内容如下:
在这里插入图片描述

二、 测试关系总结

结合思维导图,可以得出如下总结:

0. 显示效果一共有四大类

如思维导图中所显示,除了两个ScreenSpace-Overlay之间的显示结果外,其他分成了三类主要的形式:
仅受position.z影响的情况、受sortingLayer影响的情况、永远显示在最上层的ScreenSpace-Overlay模式的情况。

1. canvas的ScreenSpace-Overlay模式

在这种模式下,无论三维空间中的物体如何组合和调整,canvas都会显示在最上层(思维导图中的蓝色背景内容)。
如果是两个都是ScreenSpaceOverlay的canvas,那么会受到sortingLayer和active的影响。

2. canvas的WorldSpace和ScreenSpace-Camera模式的区别

在这两种模式下,canvas在渲染方面基本没有区别。

3. SpriteRenderer与canvas的非ScreenSpace-Overlay模式的区别

当canvas处于WorldSpace和ScreenSpace-Camera模式下时,基本就相当于SpriteRenderer,渲染方式是一致的。
如果把SpriteRenderer和WorldSpace、ScreenSpace-Overlay并列起来,可以看到这三者之中任何两者相交的渲染方式的影响参数和参数优先级是一致的(也就是上面思维导图中绿色背景内容)。
这里可以统一把这三种叫做 “三维空间中的平面渲染对象”

4.MeshRenderer与三维空间中的平面渲染对象的显示规律

从思维导图中的三个橙色背景内容可以看到,对于MeshRenderer而言,sortingOrder是不会生效的,它只会忠实地与position.z进行渲染,将position.z小的显示在更上层。
要注意一种复杂情况——两个三维空间中的平面渲染对象和一个MeshRenderer组合,会出现一些奇怪的显示效果,具体情况可以参考我在第一节中进行的测试。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值