UE4中3DUI防遮挡显示/穿模部分透明化显示

标题:UE4中3DUI防遮挡显示/穿模部分透明化显示

最近遇到一个功能需求:实现3DUI被遮挡部分透明显示,且仍能正常交互的功能。代码很简单,主要是解决思路。
先说一下解决思路:创建BP_3DUI,添加两个Widget组件,将WidgetA的材质DisableDepthTest打勾;B不做处理,并按照合适比例前小后大设置Transform(保证在视口中是重叠效果)即可。
实现效果如下:在这里插入图片描述

一:创建WidgetBlueprint

在这里插入图片描述
简单做一个Animation,便于演示。图片透明度调为0.5,后面会讲原因;
在这里插入图片描述
简单写个功能。

二:创建BlueprintClass(BP_3DUI)

在这里插入图片描述添加两个Widget组件。这里暂时给两个widget赋值(为了前期看重叠效果,后续要清除掉的)。然后把ReceiveHardwareInput打勾。(这里便于描述,前面widget为A 后面的为B);把此BP拖动到场景中,设置成Player的子对象。然后设置AB的Transform(此BP放在Player正前方,假如Player的X坐标为0,3DUI的X坐标为600;然后将A的X改为550,大小改为1/12)

三:复制一个Widget材质球,并略做更改

在这里插入图片描述
找到父级材质所在位置(找两次,找到父级的材质球)如下:复制一份到自己文件夹中便于管理,并将DisableDepthTest打勾。
在这里插入图片描述
把改好的这个材质球赋值给widgetA;

四:给BP_3DUI的两个widget赋值

把前面AB的WidgetClass清空。并在关卡蓝图获取并赋值。为了便于管理可以创建BP_UIManager进行初始化赋值。
在这里插入图片描述
可以用GetAllActorsOfClass,也可以将变量公开,从场景拖动赋值。

五:看效果

UE4 3DUI防遮挡显示

注意:

如果在第二步赋值后,若不清除,两个UI不会同步执行操作,这是因为这种赋值方式属于复制了两个不同的UI;而蓝图赋值,是把同一个UI赋值给两个widget组件。再就是两个widget组件的缩放比要算清楚,注意这两点就很容易实现了。另外第一步设置0.5的原因就是配合材质优化半透明显示效果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值