最近在项目中有需要用到Mask的理念来实现的一个效果,但是在使用了Unity原生的Mask组件之后发现了一个严重的问题。
就是边缘部分的锯齿化很严重。
经过多方查阅资料,得知原因是 mask的工作原理是根据alpha通道来计算,如果一个像素点里面是全透明的,那么做成mask之后这个点就不会透视看到下面的物体,如果这个像素点里不是全透明的,即完全不透明或者半透明,那么做成Mask之后这个点就可以透视看到下面一层的物体。
由于Mask的这个原理,它并不会将alpha值进行过渡处理,所以会出现两个问题,一个是锯齿化严重,一个是如果某个点是半透明接近透明的状态,也会很清晰得透视到mask下面的物体,看起来就像是超出范围一样。
所以,我们的softMask的作用就是解决掉这两个问题,尽可能得消除掉锯齿和半透明点的处理。
步骤一:
下载UnitySoftMask,解压,并直接导入自己的工程。
步骤二:
创建一张图片用作Mask,并为其添加SoftMask组件,并将需要显示的图片放在它的子节点
这时我们就可以看到效果,对比前面使用Unity原生mask的效果,简直不要太好。
文章最上方有资源信息。