1. 程式人生 > 其它 >Unity2D 讓自定義UI shader支援UGUI 的mask

Unity2D 讓自定義UI shader支援UGUI 的mask

場景:在遮罩層下的ui物件使用material(shader)會導致本身不受mask的影響。如:
在這裡插入圖片描述
在這裡插入圖片描述
以上沒有任何配置錯誤!
解決辦法:
修改自定義shader,使它支援mask引數

Shader "....." {
    Properties{
        .....
        //MASK SUPPORT ADD
        _StencilComp("Stencil Comparison", Float) = 8
        _Stencil("Stencil ID", Float) = 0
        _StencilOp
("Stencil Operation", Float) = 0 _StencilWriteMask("Stencil Write Mask", Float) = 255 _StencilReadMask("Stencil Read Mask", Float) = 255 _ColorMask("Color Mask", Float) = 15 //MASK SUPPORT END } SubShader{ Tags {
...} //MASK SUPPORT ADD Stencil { Ref[_Stencil] Comp[_StencilComp] Pass[_StencilOp] ReadMask[_StencilReadMask] WriteMask[_StencilWriteMask] } ColorMask[_ColorMask]
//MASK SUPPORT END Pass { ...} } FallBack "Transparent/VertexLit" }

主要為這兩段程式碼:

		//MASK SUPPORT ADD
        _StencilComp("Stencil Comparison", Float) = 8
        _Stencil("Stencil ID", Float) = 0
        _StencilOp("Stencil Operation", Float) = 0
        _StencilWriteMask("Stencil Write Mask", Float) = 255
        _StencilReadMask("Stencil Read Mask", Float) = 255
        _ColorMask("Color Mask", Float) = 15
        //MASK SUPPORT END
			//MASK SUPPORT ADD
            Stencil
            {
                Ref[_Stencil]
                Comp[_StencilComp]
                Pass[_StencilOp]
                ReadMask[_StencilReadMask]
                WriteMask[_StencilWriteMask]
            }
            ColorMask[_ColorMask]
            //MASK SUPPORT END