【UE5】物体上显示UI、Widget不在物体上而在地图原点或其他地方的问题

原因1 Bug

UI在地图原点,而不是物体上,检查了蓝图和代码均无错误。
在这里插入图片描述


UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="Mantra")//需要
UWidgetComponent* WidgetComponent;
WidgetComponent = CreateDefaultSubobject<UWidgetComponent>(TEXT("WidgetComponent"));
WidgetComponent->SetupAttachment(RootComponent);
WidgetComponent->SetVisibility(1);
	auto InfoWidegetClass = LoadClass<UUserWidget>(NULL, TEXT("WidgetBlueprint'/Game/blueprints/Npc/MerchantText.MerchantText_C'"));
	WidgetComponent->SetWidgetClass(InfoWidegetClass);
	InfoWidgetComponent->SetWidgetSpace(EWidgetSpace::Screen);
	//InfoWidgetComponent->SetPivot(FVector2D(1, 0.5));
	//InfoWidgetComponent->SetDrawSize(FVector2D(120.0f, 10.0f));
	//InfoWidgetComponent->SetRelativeLocation(FVector(0.0f, 0.0f, 95.0f));

原因是场景中的实例没有跟随蓝图变化,重新拖入一个。
如图为重新拖入物体的与原物体。
如果说依然没有,这是UE的Bug,关闭UE在vs中重新编译即可。
在这里插入图片描述

RootComponent=Sphere;//设置根组件的方法

注意:>SetupAttachment(RootComponent)这一句是必须要写的,如果没有设置根组件,必须先设置根组件,然后关闭UE在vs中重新编译即可。

原因2 UserWidget设置错误

在这里插入图片描述
画布首先点右上角选择[屏幕上所需]
在这里插入图片描述
其次边界锚点必须选中间
在这里插入图片描述

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在蓝图中创建两个物体的碰撞事件,并在这个事件中编写代码来增加或减少角色的UI分数。可以通过查询当前UI分数,然后根据碰撞事件来更新UI分数。具体的实现方式可以参考以下步骤: 1. 创建一个角色类,该类应该包含UI分数的变量和一个方法来更新UI。 2. 在蓝图中创建两个物体,并将它们放置在合适的位置。 3. 为每个物体添加一个碰撞组件,并设置碰撞的大小和形状。 4. 在角色类中创建一个事件,用于处理当物体碰撞时更新UI分数。这个事件需要接收两个参数:被碰撞的物体和碰撞事件。 5. 实现该事件中的代码来读取当前的UI分数,然后根据碰撞事件来增加或减少分数。在更新UI分数后,需要调用角色类中的UI更新方法。 以下是基于UE4的蓝图实现的伪代码: 1. 创建一个角色类Actor,包含一个变量Score和一个UpdateUI方法。 2. 在蓝图中创建两个物体Object1和Object2,给每个物体都添加一个碰撞组件。 3. 在蓝图中为物体碰撞事件添加一个事件OnCollision。 4. 在Actor类中添加一个事件OnCollision,接收两个参数:被碰撞的物体和碰撞事件。 5. 在OnCollision事件中,读取当前的Score变量。 6. 根据碰撞事件增加或减少当前的Score变量。 7. 调用UpdateUI方法来更新UI。 8. 在UpdateUI方法中,更新UI显示当前的分数。 注意:在蓝图中实现,对于具体的细节可能略有不同,需要针对具体的实际情况进行实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值