- UE系统Button点击事件无法传递参数,通过子类化系统Button添加自定义参数扩展实现Button点击事件参数传递
- 点击C++类文件夹,在右边的区域点击鼠标右键,在弹出的菜单中选择“新建C++类” 
- 在弹出的菜单中选中“显示所有类”,选择Button作为父类, 点击“下一步”按钮 
- 输入类名"UVRVIUButton",选择工程目录作为新类的目标模块,点击“公共”选择器,点击“创建类”按钮 
-  声明点击事件回调方法 1 DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnVRVIUButtonClicked, int32, ButtonID, FString, AdditionalParameter);
-  定义点击事件回调变量 1 2 3 // 点击事件回调UPROPERTY(BlueprintAssignable, Category ="VRVIU Button")FOnVRVIUButtonClicked OnVRVIUButtonClicked;
-  定义扩展参数变量 1 2 3 4 5 6 7 // 设置按钮IDUPROPERTY(EditAnywhere, BlueprintReadWrite, Category ="VRVIU Button")int32 ButtonID;// 设置按钮扩展参数UPROPERTY(EditAnywhere, BlueprintReadWrite, Category ="VRVIU Button")FString AdditionalParameter;
-  绑定按钮点击事件 1 2 // 设置按钮点击事件绑定OnClicked.AddDynamic(this, &UVRVIUButton::HandleButtonClicked);
-  点击事件中调用回调方法,传递扩展参数 1 2 3 UE_LOG(LogTemp, Warning, TEXT("UVRVIUButton::HandleButtonClicked"));// 触发自定义按钮点击事件OnVRVIUButtonClicked.Broadcast(ButtonID, AdditionalParameter);
-  调用者绑定回调事件 1 Button->OnVRVIUButtonClicked.AddDynamic(this, &ALandMasterGameMode::OnButtonClicked);
-  调用者实现回调事件,获取扩展参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 voidALandMasterGameMode::OnButtonClicked(int32 ButtonID, FString AdditionalParameterr) {UE_LOG(LogTemp, Warning, TEXT("On Button Clicked roomId is %d, ipAdress is %s"), ButtonID, *AdditionalParameterr);this->IntranetIP = AdditionalParameterr;if(nullptr != CurrentWidget){UButton* btn = Cast<UButton>(CurrentWidget->GetWidgetFromName(TEXT("ConnectButton")));if(btn != nullptr){btn->OnClicked.Broadcast();}else{UE_LOG(LogTemp, Warning, TEXT("verticalBox is not find"));}}}