1.新建事件调度器
MyActor.h
#pragma once
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDelegate, AActor*, broa);
UCLASS()
class STORY_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor();
// Called when the game starts or when spawned
virtual void BeginPlay() override;
// Called every frame
virtual void Tick( float DeltaSeconds ) override;
UPROPERTY(BlueprintAssignable)
FDelegate xDelegate;
};
MActor.cpp(替换story.h为你的项目或者模块名称)
#include "story.h"
#include "MyActor.h"
// Sets default values
AMyActor::AMyActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
Super::BeginPlay();
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Green, FString("Actor::BeginPlay broadcast"));
}
xDelegate.Broadcast(this);
}
// Called every frame
void AMyActor::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );
}
2.编译并在关卡中添加Actor后,在蓝图关卡增加事件绑定
3.运行查看效果(执行顺序:关卡蓝图->Actor)
另:无参的事件调度器声明为
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FDelegate2);