场景:在遮罩层下的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

更多推荐