UE C++委托 broadcast
时间: 2024-01-11 20:19:59 浏览: 115
UE C++中的委托是一种事件处理机制,可以将多个方法绑定到同一个委托上,当委托被触发时,所有绑定的方法都会被执行。而Broadcast()是委托的一个方法,用于触发委托并执行所有绑定的方法。
下面是一个使用委托Broadcast()的例子:
在AMyGameModeBase.h中声明一个委托:
```cpp
DECLARE_MULTICAST_DELEGATE_OneParam(FMyDelegate, bool);
UCLASS()
class TEST_API AMyGameModeBase : public AGameModeBase
{
GENERATED_BODY()
public:
//实例化委托
FMyDelegate MyDelegate;
};
```
在AMyTrigger.cpp中定义一个方法DoExecute(),并在其中触发委托:
```cpp
void AMyTrigger::DoExecute(bool value)
{
UWorld *MyWorld = GetWorld();
if (MyWorld)
{
AGameModeBase *GameModeBase = UGameplayStatics::GetGameMode(MyWorld);
AMyGameModeBase *MyGameMode = Cast<AMyGameModeBase>(GameModeBase);
if (MyGameMode)
{
//委托广播
MyGameMode->MyDelegate.Broadcast(value);
}
}
}
```
在另一个类中,绑定该委托并定义一个方法来处理委托触发时的事件:
```cpp
void AMyOtherClass::BeginPlay()
{
Super::BeginPlay();
UWorld *MyWorld = GetWorld();
if (MyWorld)
{
AGameModeBase *GameModeBase = UGameplayStatics::GetGameMode(MyWorld);
AMyGameModeBase *MyGameMode = Cast<AMyGameModeBase>(GameModeBase);
if (MyGameMode)
{
//绑定委托
MyGameMode->MyDelegate.AddDynamic(this, &AMyOtherClass::MyEventHandler);
}
}
}
void AMyOtherClass::MyEventHandler(bool value)
{
//处理委托触发时的事件
}
```
阅读全文