Unity遮罩效果

这个两天在看关于遮罩的文章,下面这个连接里的文章给了我一点提示:http://www.cocoachina.com/gamedev/gameengine/2011/0602/2917.html

我理解的遮罩是:两张图片,重叠的部分不显示,未重叠的部分显示出来,下图我中背景用了UITexture,遮罩部分用了两张png图片(ps默认,带有rgb通道),其中一张是空图(没有任何颜色,但是带有RGB通道):

Unity遮罩效果_第1张图片

但这个效果和我所要的有些出入,我只想让这个图片上半部分显示出来,下面的白色不影响后面的背景,所以在这里要给白色的空图给一个shader:DepthMask(在上面给出的连接可以下载到),加完后效果如下图:

Unity遮罩效果_第2张图片

达到遮罩的效果了,当然在做的过程中要注意下depth和z轴的调整,完工...\(^o^)/~

修改:在上面的方法中的确是实现了遮罩的效果,但是在最近的项目实践中发现,这个方法实在是有些不靠谱(比如:自适应就不好整),后来在一个专注于ngui的群里找到了大神的帮助,发现其实更加简单的方法可以实现这个:

(1)使用两个UICamera(可参照NGUi的官方示例:ScrollView-Camera)

此为遮罩的MaskUI层;

此为主UI的成,其中winBack是用来限制MaskUI的camera显示区域的,在下图中可看出;

Unity遮罩效果_第3张图片

此图为MaskUI的Camera上添加的脚本,“SourceCamera“为主UICamera,即上图中红色区域的Camera,TopLeft和BottomRight为上图红色WinBack对应的TopLeft和BottomRight;

(2)将Texture的Shader修改成Unlit - Transparent Colored (SoftClip)即可解决NGUI2.6.4的裁剪区域对Texture不管用啦!

本人采用的NGUI为2.6.4版本。

你可能感兴趣的:(unity,遮罩)