.h:
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Templates/SubclassOf.h"
#include "UObject/NoExportTypes.h"
#include "Components/BoxComponent.h"
#include "SpawnVolume.generated.h"
UCLASS()
class MYCTEST_API ASpawnVolume : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
ASpawnVolume();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
class UBoxComponent* SpawningBox;
UFUNCTION(BlueprintPure)
FVector GetSpawnPoint();
UFUNCTION(BlueprintImplementableEvent)//当函数类型为BlueprintImplementableEvent时,不能去在cpp去写它的函数定义,而要在类的蓝图去实现
void CustomEvent();
UFUNCTION(BlueprintCallable)
FVector GetSpawnPointDummy(FVector Value);
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TSubclassOf<class AActor> PawnToSpawn;
};
.cpp:
// Fill out your copyright notice in the Description page of Project Settings.
#include "SpawnVolume.h"
// Sets default values
ASpawnVolume::ASpawnVolume()
{
// 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;
}
FVector ASpawnVolume::GetSpawnPoint()
{
return FVector();
}
FVector ASpawnVolume::GetSpawnPointDummy(FVector Value)
{
CustomEvent();
return FVector();
}
// Called when the game starts or when spawned
void ASpawnVolume::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void ASpawnVolume::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}