UE DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam.Add
时间: 2024-09-20 09:07:22 浏览: 79
在Unreal Engine中,`DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam`是一个宏,用于声明一个动态单参数多播委托(Dynamic Multicast Delegate with one parameter)。当你使用这个宏,它会帮你自动生成必要的底层细节,使得在运行时能够轻松地创建、存储和管理这种类型的委托实例。
例如,如果你想要声明一个接受一个`float`参数的委托,可以这样做:
```cpp
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnMyEvent, float, Parameter);
```
这将创建一个名为`FOnMyEvent`的委托类型,其中`Parameter`表示传入的一个`float`值。你可以像下面这样使用它:
```cpp
UClass* MyClass = ...;
MyClass->OnMyEvent.BindDynamic(MyInstance, &MyClass::HandleMyEvent);
// 使用委托
MyClass->OnMyEvent(ParameterValue);
// 或者在另一个地方取消订阅
MyClass->OnMyEvent.UnbindDynamic(MyInstance);
```
这里`BindDynamic`用于绑定事件处理函数到委托上,`UnbindDynamic`则是解绑。
相关问题
UE DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam
UE_DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam是一个Unreal Engine(虚幻引擎)中的宏,用于声明动态多播委托(Dynamic Multicast Delegate)。它允许开发者创建可以被多个订阅者(即其他函数或组件)接收的事件处理程序,并且传递一个参数。这个宏通常配合`DECLARE_DYNAMIC_MULTICAST_DELEGATE`一起使用,后者声明基本的动态委托。
例如,你可以这样做:
```cpp
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMyEvent, ACharacter*, Character);
UCLASS()
class MyClass : public UObject
{
public:
UPROPERTY(BlueprintAssignable)
FMyEvent OnCharacterEvent;
void DoSomething(ACharacter* Victim) {
// 发布事件,传入一个参数
OnCharacterEvent.Broadcast(Victim);
}
};
```
在这里,`OnCharacterEvent`就是一个可以传递ACharacter指针的动态多播委托。当你在MyClass的实例上调用`Broadcast(Victim)`时,所有订阅了该事件的地方都会收到这个事件,且传入`Victim`作为参数。
DECLARE_DYNAMIC_DELEGATE_RetVal_FourParams
这是一个宏定义,用于声明一个动态委托,该委托有四个参数并且返回值类型可自定义。下面是该宏定义的源代码:
```
#define DECLARE_DYNAMIC_DELEGATE_RetVal_FourParams(DelegateName, ... ) \
DECLARE_DELEGATE_RetVal_FourParams(DelegateName, __VA_ARGS__) \
template<typename Functor> \
FORCEINLINE typename TEnableIf<!TIsSame<Functor, DelegateName>::Value, DelegateName>::Type& operator=(Functor InFunctor) \
{ \
return *new DelegateName::template TRawMethodDelegateInst<sizeof(DelegateName::FDelegateHelper), sizeof(Functor)>(InFunctor); \
}
```
使用此宏定义时,需要提供两个参数:委托名称和四个参数的类型列表。例如:
```
DECLARE_DYNAMIC_DELEGATE_RetVal_FourParams(FMyDelegate, int32, float, FString, bool);
```
这将声明一个名为 FMyDelegate 的动态委托,该委托有四个参数,分别为 int32、float、FString 和 bool 类型,并且可以根据需要指定返回值类型。
阅读全文