1

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

标签 {“队列" = "透明"

ZTest LEqual
ZWrite On
ColorMask 0
Pass {}

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

关于着色器的测试,如果您可以分配特定对象以便它们与其他对象的行为不同,有什么想法吗?(或类似的解决方案)

4

0 回答 0