使用z坐标控制ugui和Render的层级显示

需要修改默认的shader, 像UI-Default, Sprite-Default, 他们默认都没有开启深度测试, 也就是z坐标不参与层级显示(实际调了z坐标偶尔会有效果, 但那个是随机的, 不可靠),

所以需要先修改他们

# 去unity官网下载对应unity版本的buildin_shaders, 然后copy到项目下, 开启深度测试

UI-Default.shader

使用z坐标控制ugui和Render的层级显示

Sprite-Default.shader

使用z坐标控制ugui和Render的层级显示

 

 

# Image, Sprite, MeshRender分别使用不同的z坐标后,可以看到他们的层级可以正确显示

 使用z坐标控制ugui和Render的层级显示

 

 使用z坐标控制ugui和Render的层级显示

 

 

【开启了深度测试, 对合批有没影响?】

# ugui间还是可以合批

# ugui和SpriteRender的话本身就没法合批

使用z坐标控制ugui和Render的层级显示

 

【RectMask2D裁剪有影响吗?多个界面间的层级会乱掉吗?】

# 可以裁剪,但是多个界面间的层级会乱掉,这就要求自己去控制所有节点的z坐标,这个对于界面而言就麻烦了。所以这种方法还是不合适。

使用z坐标控制ugui和Render的层级显示

 

上一篇:UGUI_Dropdown用法以及解决 多次点击同一项无回调问题


下一篇:Unity UGUI uv1 uv2 不起作用