Unity3d Shader Z 测试题,ZTest 更大但保持落后

问题描述

我对 Unity 中的着色器很陌生,我正在尝试创建一些东西,但我所有的尝试都失败了。 场景是这样的,我有以下对象:A,B,C.
A 是精灵,B 是 Textmesh(不是 GUI),C 是深度蒙版矩形。
我想获取文本并将其滚动到“A”精灵上,但由于仅在精灵上滚动文本将导致文本超出精灵边界,我想创建一个深度遮罩,仅在渲染时遮罩文本将出现,并将该遮罩放在精灵上。
效果很好,我先放了精灵 (A),然后是文本 (B),然后在它的着色器中添加了 ZTest Greater,然后是 (C) 深度蒙版,它基本上是一个带有以下着色器的矩形:

标签 { "队列" = "透明" }
关灯
ZTest LEqual
ZWrite On
颜色蒙版 0
通过{}

这使得文本只出现在蒙版的矩形上,一旦滚动出来,它就会消失,这很棒。
现在对于我的问题,我有一个对象,它可以出现在所有内容的顶部,并且应该使所有内容都消失(所以我使用了如上所述的深度蒙版),但是因为我已经将文本定义为 ZTest Greater ,当该对象经过时,所有内容都会正确消失除了文本
我的问题如下,有没有办法区分两个面具,这样文字会出现在一个(通过 Ztest),但从另一个消失(没有通过 Ztest?)。
附上描述我的问题的屏幕截图,如您所见,红色蒙版显示文本的一部分(这很好),但需要位于屏幕末尾的蓝色蒙版无法处理文本,因为文本是ZTest 更大,这是红色面具所需要的。
所以我真正需要的是一种让蓝色遮罩覆盖文本但红色遮罩显示它的方法

enter image description here

关于着色器的测试,您是否有任何想法可以指定特定对象,以便它们与其他对象之间的行为不同? (或类似的解决方案)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)