我正在尝试将动态委托添加到多播委托中,但未能如我所愿地使其正常工作。分配代码如下:
void UFiniteStateMachine::CreateTransition(TSoftObjectPtr<UFSM_State> from, TSoftObjectPtr<UFSM_State> to, const FQueryTransition &QueryTransitionCallback, float delay)
{
UFSM_Transition* newTransition = NewObject<UFSM_Transition>();
newTransition->transitionTime = delay;
newTransition->QueryTransition.Add(QueryTransitionCallback);
}
当我想在蓝图中调用此函数时,我传递给该函数的类型是如下定义的动态委托
DECLARE_DYNAMIC_DELEGATE_OneParam(FQueryTransition, UFSM_Transition*, self);
newTransition 变量的定义如下
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FQueryTransition, UFSM_Transition*, self);
有人对如何实现这一目标有任何指示吗?它可以很好地进行编译,但是在蓝图中使用任何功能时,都会错误地指出事件的定义不再匹配。完整细节在下面的屏幕截图中。