经常会有需要镂空一张贴图的时候,比如新手引导的界面。使用自定义NGUI Shander可以简单的实现。但是效果还是比较初级
步骤一:
创建两个UITexture,分别为黑色底图maskbg,蒙板mask。mask要层级低于maskbg。
步骤二:准备两个Shader:Unlit - Transparent Colored MaskBG,Unlit - Transparent Colored Mask,分别给maskbg及mask使用。它们都是在NGUI自带渲染UITexture的Shader Unlit - Transparent Colored上改变而来。所以可以复制两份Unlit - Transparent Colored着色器,分别命名好。
步骤三:在Transparent Colored MaskBG加入代码
Stencil{ Ref 0 Comp Equal }
只有蒙板缓冲区的值为0时,贴图像素才会被渲染。没添加mask的话能全部显示。
步骤四:在Transparent Colored Mask
Stencil{ Ref 1 Comp Never Fail Replace }
永远不渲染mask贴图,并且将蒙板缓冲区的值置为1。
步骤五:给maskbg及mask这两个UITexture设置你想要的贴图。通过指定mask的位置的大小,可以方便地控制蒙板区域。
不支持Alpha蒙板,后面再研究