[Unity3D] 记录一下ScrollView中粒子无法被Mask遮挡的问题解决过程

前言:

项目解决问题1所使用的Shader链接:https://www.codenong.com/cs107033982/

问题1:以大厅为例,大厅的ScrollView中有多个图标,ScrollView中的Mask无法遮挡粒子特效。

解决思路:

1、粒子特效使用的Mobile/Particles/Additive(Shader)材质球不包含模板测试,添加模板测试后可以与普通Image一样被Mask遮挡,所以我们给粒子的材质球加上模板测试。
2、普通Image使用默认的材质球,该材质球模板测试通过需要令 Stencil ID = 1。所以给Mask和粒子添加的材质球中的 Stencil ID = 1。

模拟设置内容过程
Viewport初始状态
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

3、为Mask中的图片添加模板测试 Stencil ID = 1, Stencil Comparision = 8, Stencil Operation = 2。

Viewport添加材质球后
0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

4、为粒子添加模板测试 Stencil ID = 1, Stencil Comparision = 3,使得粒子或图片只有在背景数字等于1时才会显示。

左上角放入一个添加了材质的4 * 4的粒子

4 * 4的粒子添加材质球后
1 1 1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
与Mask合并后,只有√的区域才显示
0 0 0 0 0 0 0 0 0 0 0
0 0 √ √ 1 1 1 0 0 0 0
0 0 √ √ 1 1 1 0 0 0 0
0 0 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

解决方式:

1、参照网上的方式,对Viewport中Mask图片使用MaskDefault材质球,对粒子特效使用MaskAdditive材质球。

问题2:使用以上方案解决Mask无法遮挡粒子特效的问题后,若2个界面的ScrollVie

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值