UE5中如何通过按钮点击事件修改TextBlock文本?
UE5通过按钮点击修改User Widget文本块内容的方法
蓝图实现步骤
- 打开你的User Widget蓝图,确认已添加Button和TextBlock控件。
- 给TextBlock设置可引用的变量:选中TextBlock,在Details面板的「Variable」区域修改「Variable Name」(比如叫
TargetTextBlock),点旁边的「Promote to Variable」按钮,把它变成蓝图变量。 - 给Button绑定点击事件:选中Button,在Details面板的「Events」区域找到「OnClicked」,点旁边的「+」进入事件图表。
- 在事件图表里,从Button的OnClicked节点拖出连线,添加
Set Text节点,把刚才创建的TargetTextBlock变量拖到Set Text的「Target」引脚。 - 在Set Text的「Text」引脚输入你要改成的内容(可以直接输字符串,也可以绑定其他变量)。
- 保存编译蓝图,运行游戏点按钮,文本块内容就会更新。
C++实现(进阶参考)
如果后续想尝试用C++实现,步骤如下:
- 在User Widget的头文件中声明控件指针和回调函数:
#pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "Components/TextBlock.h" #include "Components/Button.h" #include "MyUserWidget.generated.h" UCLASS() class YOURPROJECT_API UMyUserWidget : public UUserWidget { GENERATED_BODY() protected: virtual void NativeOnInitialized() override; private: UPROPERTY(meta = (BindWidget)) UTextBlock* TargetTextBlock; // 要和蓝图中控件的变量名对应 UPROPERTY(meta = (BindWidget)) UButton* UpdateTextButton; // 你的按钮变量名 UFUNCTION() void OnButtonClicked(); };
- 在cpp文件中实现逻辑:
#include "MyUserWidget.h" void UMyUserWidget::NativeOnInitialized() { Super::NativeOnInitialized(); if (UpdateTextButton) { UpdateTextButton->OnClicked.AddDynamic(this, &UMyUserWidget::OnButtonClicked); } } void UMyUserWidget::OnButtonClicked() { if (TargetTextBlock) { TargetTextBlock->SetText(FText::FromString(TEXT("修改后的文本内容"))); } }
- 回到蓝图,在Details面板的「Bind Widget」区域,把对应的TextBlock和Button绑定到C++声明的变量上。
内容的提问来源于stack exchange,提问作者Claire
相关产品推荐
相关产品推荐

