【UE4 C++】 獲取Actor、Controller、Pawn、Character


獲取 Actor

TActorIterator 遍歷

  • 可以用於遍歷 Actor,也可以用於遍歷 Component

    for (TActorIterator<AStaticMeshActor> ActorIter(GetWorld()); ActorIter; ++ActorIter)
    {
    	UKismetSystemLibrary::PrintString(GetWorld(), FString::Printf(TEXT("%s"), *ActorIter->GetName()));
    }
    

UKismetSystemLibrary::GetAllActorsOfClass

  • Syntax

    static void GetAllActorsOfClass(const UObject* WorldContextObject, TSubclassOf<AActor> ActorClass, TArray<AActor*>& OutActors);
    
  • 代碼實現

    TArray<AActor*> OutActors;
    UGameplayStatics::GetAllActorsOfClass(GetWorld(), AStaticMeshActor::StaticClass(), OutActors);
    for (AActor* actor : OutActors)
    {
    UKismetSystemLibrary::PrintString(GetWorld(), actor->GetName());
    }
    

UKismetSystemLibrary::GetAllActorsWithTag

  • Syntax

    static void GetAllActorsWithTag(const UObject* WorldContextObject, FName Tag, TArray<AActor*>& OutActors);
    

UKismetSystemLibrary::GetAllActorsWithInterface

  • Syntax

    static void GetAllActorsWithInterface(const UObject* WorldContextObject, TSubclassOf<UInterface> Interface, TArray<AActor*>& OutActors);
    

獲取 Controller

可配合 Cast 轉換成對應的 Controller

UKismetSystemLibrary::GetPlayerController

  • Syntax

    static class APlayerController* GetPlayerController(const UObject* WorldContextObject, int32 PlayerIndex);
    
  • 代碼實現

    APlayerController* playerController = UGameplayStatics::GetPlayerController(GetWorld(), 0);
    

UWorld::GetFirstPlayerController

  • 代碼實現

    APlayerController* playerController = GetWorld()->GetFirstPlayerController();
    

獲取 Pawn

UKismetSystemLibrary::GetPlayerPawn

  • 代碼實現

    APawn* myPawn = Cast<ADrone>(UGameplayStatics::GetPlayerPawn(GetWorld(), 0));
    

GetPawn

  • 代碼實現

    APawn* myPawn = GetWorld()->GetFirstPlayerController()->GetPawn();
    

獲取 Character

UGameplayStatics::GetPlayerCharacter

  • 代碼實現

    ACharacter* myPawn = UGameplayStatics::GetPlayerCharacter(GetWorld(), 0);
    

GetCharacter

  • 代碼實現

    ACharacter* myPawn = GetWorld()->GetFirstPlayerController()->GetCharacter();
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM