首先看下Unity的渲染层级关系以及提供的各种默认渲染队列,然后再去看具体实现方案。
先按大项条件排序,后按小项条件排序
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以上
1. Sorting Layer/Order in Layer
1. 按照Sorting Layer/Order in Layer 设置的值,越小越优先
2. 无此属性,等同于 Sorting Layer=default ,Order in Layer=0 参与排序 2.RenderQueue 越小越优先 3.RenderQueue 相等,
实现方案举例:
1.添加Overlay模式相机,添加layer层级,设置对应相机要渲染的模型层级;修改相机Depth(也就是在Base Camera中的顺序)
2.对应SpriteRender或Canvas下的UI等,修改Sorting Layer及Order in layer的值,越大越后渲染,即显示在前面。
3.对于3D物体,保证其材质Shader的Surface Type模式为Transparent,然后修改Render Queue(或Lit中的Priority),值越大的越后渲染,也就是会在画面最前面。
4.对于3D物体,保证其材质Shader的Surface Type模式为Transparent,且渲染队列值一致时,也可通过添加Sorting Group组件,设置其Sorting Layer。
文章来源:https://www.toymoban.com/news/detail-563081.html
5.对于非Transparent模式的3D模型(Opaque),修改以上不会生效,需要额外修改遮挡关系及深度数据等,具体实现后续再补充吧...文章来源地址https://www.toymoban.com/news/detail-563081.html
到了这里,关于Unity 修改画面渲染顺序的几种实现方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!