Doris232 发表于 2021-5-26 06:11

关于Unity的遮罩问题!如何仅仅遮挡被遮罩物,而让遮罩物的其他区域变透明呢(见图)?

如题,我设计了一个血条,实现原理见图2,就是用一个黑条图片来遮罩血条,用黑条的左右移动来实现加减血量的效果。但请问,怎样让血条其他区域透明,不显示黑条呢?(游戏背景是黑色还好说,一旦不是黑色,实在太丑啦u002F(ㄒoㄒ)u002F~~)

zt3ff3n 发表于 2021-5-26 06:17

为什么要用这种方法,
血条本身不用图片,就透明的,然后把遮罩的黑色改成红色充当血条,方向反过来不就好了。


更新一下
如图,fill是黑条,background是红条。
给fill加一个mask组件,就完成了。
滑动条设置如图,没什么要变得。
效果如图
不过这种方法似乎实现不了题主那种黑条上下还有红条的效果(就是仅仅把黑条部分剔除)unity的mask组件是只显示被Fill(有mask组件的gameobject)覆盖的地方,而不是剔除被覆盖的地方,如果一定要实现这个效果,我知道的唯一的方法就是做一个render texture,在屏幕上全屏放下,然后让黑条遮罩这个render texture,不过这种有点儿杀鸡用牛刀的感觉(众所周知render texture很耗),所以只能期待一下其他答主补充啦。


(texture写成picture了,偷偷改一下,几个月没用unity都要忘掉了 )

franciscochonge 发表于 2021-5-26 06:18

我建议用image的fill amount功能去表达血条。
将Image Type 改成Filled,然后在Fill Method 上改成Horizontal。调用Fill Amount以改变血条填充量。这个方法是最通常用来做条形图。而Fill Method 改成Radial 360的话,就可以做出类似技能CD的图。


<hr/>楼上的方法也不是最好,但也没什么毛病,需要提醒的地方是用Slider的话要将里面interactable关掉。
即使是用题主黑块的方法也可以,将黑块变成血条的子项,RectTransform设成下图红色框这样,然后调用时僅修改Left值即可。
<hr/>最后宣传一下Unity开发者圈子
建圈初期人不多不活跃,希望大家可以进来聊聊天水水群多多交流。
Unity3D游戏开发圈 - 知乎
页: [1]
查看完整版本: 关于Unity的遮罩问题!如何仅仅遮挡被遮罩物,而让遮罩物的其他区域变透明呢(见图)?