我用UMG和C++配合,动态创建一系列Button,但问题来了,单击按钮响应只能绑定一个空参数空返回值的函数。
这样的话如何区分这些Button哪个被点击了?
下面是我的几行简略的代码,
for(int i = 0; i < 10000; i++)
{
button*->CreateWidget(GetWorld(), MyUserButtonClass);
button*->OnClicked.AddDynamic(this, &MyGameMode::OnClickButton);
Scrollbox->AddChild(button*);
}
绑定的函数只能是——void OnClickButton(void)
我希望函数原型是这样的:
void OnClickButton(int IndexOfButton)
{
UE_LOG(LogTemp, Warning, TEXT(“The %d BUTTON clicked”), IndexOfButton);
// 下面要做的是,读取第几行记录
}
这样就能区分出是哪个Button了。
目前实现不了,我想问问各位牛人我该怎么办?
先谢谢指教。~
Noah_Z
(Noah_Z)
2
先说结论,无法直接做到,除非你是用宏这一类的奇技淫巧。
在Button.h里面可以看到FOnButtonClickedEvent的声明为DECLARE_DYNAMIC_MULTICAST_DELEGATE,换句话说不带参数,因此实现你的需求的方法应该只有重写Button类然后将FOnButtonClickedEvent的声明重写为DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam类型。
以上仅仅是我个人的判断,欢迎打脸……
谢谢你的指点,我今天在QQ群里有个人给我说了一种思路,我晚上回去试验一下,如果成功,我再来这里结贴~~~~
谢谢你的指点,我今天在QQ群里有个人给我说了一种思路,我晚上回去试验一下,如果成功,我再来这里结贴~~~~