【求助】为什么我button的click响应函数注册的是其他类成员函数就单击无效?

过程是这样的:

我先自定义了一个widget blueprint:

里面包含了一个button和一个text(以后可能还有其他东西,暂时不管)
然后在我的GameMode类中,增加了成员变量,用来指代刚才那个widget blueprint:

图中由于我可能要创建多个自定义的widget,所以还多了一个数组。
然后编译完了之后,我就可以在GameMode的蓝图类里,找到这个成员变量,并把它引用刚才的widget。

这个自定义的widget,我想在里面放点自己的东西,比如标志该widget创建时的序列号,表明自己是第几个widget,于是我定义了一个类,这个类继承自UUserWiget:

如上图,在这个类中,我设置了一个成员变量m_iIndexOfDram,用来表明自己是第几个widget。另外新设置了一个函数OnDramaButtonClick。
现在我要在GameMode的BeginPlay里,创建这个widget了:

创建了10个自定义的widget,并将每一个widget的m_iIndexOfDram赋值一个编号。
并在将这个新创建widget里面button的响应函数,设置到自己的类成员函数OnDramButtonClick。

目前出现的问题是:点击button的时候,并不能执行到自定义类的成员函数OnDramButtonClick,为什么?
如果改成设置到GameMode类(创建时所在类)的某个函数(下面被注释掉的一行),就可以执行到。

另一个疑问:我创建widget的代码CreateWidget调用写的对吗?
我调用CreateWidget时,是按照UUserWidget创建的,但我拿到手之后,强转为其继承类UDramSingleWidgetClass。
这里是不是很危险?因为创建的时候,是按照UUserWidget,但用的时候,是当做UDramSingleWidgetClass来用,
内存里根本就不会给继承类的成员函数m_iIndexOfDrama分配存储空间,那为啥在中间标红处给m_iIndexOfDrama赋值时不会报内存错误?
会不会——内存里根本就没有继承类里的OnDramaButtonClick函数,才调不到这个继承类里面的OnDramaButtonClick?

再一个疑问:我的button的响应函数,只能是个void function (void),我怎么区分是哪个button被点击了呢?

先谢谢各位大牛的指点~

你的创建有问题,Create<UDramSingleWidgetClass>这样试试,
至于所以没出错是因为恰巧溢出的地方没有被使用