WECHAT

扫码添加微信

YoungFan 微信二维码
← 返回 和平精英绿洲启元坑点记录
踩坑记录已归档

动态加载的全屏 UIBP 会拦截其他界面点击

Widget 默认使用全屏 Anchor,加入 UI Slot 后会覆盖点击区域;目前通过预挂到主界面规避。

UIBP点击事件Anchor

使用下面的方式动态加载交互界面后,除了 UGC_InteractMain_UIBP 自身,其他 UI 的点击事件都会被阻挡:

local WidgetPath = UGCGameSystem.GetUGCResourcesFullPath(
    'Asset/Blueprint/Arts_UI/Game/UIBP/InteractEntity/UGC_InteractMain_UIBP.UGC_InteractMain_UIBP_C')

UGCWidgetManagerSystem.CreateWidgetAsync(WidgetPath, function(Widget)
    UGCWidgetManagerSystem.AddToSlot(Widget, 'UI.UISlot.MainUISlot_Low', 0)
    UGCWidgetManagerSystem.ShowWidget(Widget)
    self.m_interactUIWeakptr = UGCObjectUtility.MakeWeakObjectPtr(Widget)
end)

UGC_InteractMain_UIBP 的 AnchorData 默认是 min=(0,0), max=(1,1):

UGC Interact Main UIBP 的全屏 Anchor

这意味着它实际是一个全屏界面,会占据整个点击区域并阻止事件穿透。

全屏 Widget 覆盖点击区域

目前的规避方式是预先把 UGC_InteractMain_UIBP 挂到 UGCMainUI,需要时直接取得并显示:

local MainUIPath = UGCGameSystem.GetUGCResourcesFullPath(
    'Asset/Blueprint/UGCMainUI.UGCMainUI_C')
local interactionWidget = UGCWidgetManagerSystem.GetUserWidgetByWidgetLayout(
    MainUIPath, "UGC_InteractMain_UIBP")

if interactionWidget then
    UGCWidgetManagerSystem.ShowWidget(interactionWidget)
    self.m_interactUIWeakptr = UGCObjectUtility.MakeWeakObjectPtr(interactionWidget)
end

这只是当前可用的绕过方案,动态加入 Slot 后的事件遮挡原因仍需继续确认。

Discussion

留言讨论

无需注册账号
正在加载留言区…

发表留言时,评论服务会记录必要的 IP 与 User-Agent 信息,用于安全审核和防止滥用。