虚幻 C++ / GetActorOfClass

Unreal C++ / GetActorOfClass

我是 Unreal C++ 的新手,我很难找到如何在 C++ 中正确编写 GetActorOfClass(单数,而不是 GetAllActorsOfClass)以便在 BeginPlay 设置对另一个 AActor 的引用。

我在 AActor A 的 header 和 cpp 以及 AActorB.h 中包含了 GameplayStatics。

现在,我首先所做的只是在 AActor A header 文件中,声明一个 UPROPERTY(EditAnywhere,BlueprintReadWrite) AActorB*ActorB 这样我就可以在编辑器中手动设置 AActor B但我更愿意在 AActor A 的开始播放中用 GetActorOfClass 设置它。

正确的语法是什么?

谢谢

编辑:这是我尝试用 C++ 做的 BP 版本:

BP Version

编辑 2:我在 C++ 中的尝试

   void ALocalMaster::BeginPlay()
{
    Super::BeginPlay();

    GameManager = static AActor*GetActorOfClass(const UObject*GameManager,TSubclassOf<AGameManager>);
}

简单的答案,只需使用 GetAllActorOfClass 并在必要时将其动态转换为您的 actor 子类型:

// be sure to use #include "Containers/Array.h" 
// as well as #include "Kismet/GameplayStatics.h"

// Assuming GameManager is of type AMyGameManagerActor*

void ALocalMaster::BeginPlay()
{
    Super::BeginPlay();

    AActor* FoundActor = UGameplayStatics::GetActorOfClass(GetWorld(), 
            AMyGameManagerActor::StaticClass());

    GameManager = Cast<AMyGameManagerActor>(FoundActor);
 
    if(GameManager == nullptr)
    {
        // handle error
    }
    else
    {
        // do stuff with GameManager
    }
}