天天看點

使用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的層級顯示

繼續閱讀