프로그래밍

🎮 언리얼 엔진5에서 특정 클래스의 액터 찾기 (C++ )

세남매 아빠 2025. 5. 9. 15:48
728x90
728x90

 

언리얼 엔진5(UE5)에서 특정 클래스의 액터(Actor)를 찾는 방법을 소개해드리려고 합니다.

게임 개발을 하다 보면, 월드 내에 존재하는 특정 클래스의 액터를 탐색하거나 조작해야 하는 경우가 많죠.

이번 포스팅에서는 C++ 코드로 해당 기능을 구현하는 방법을 알아보겠습니다.


✅ C++ 코드로 클래스 기반 액터 찾기

언리얼 엔진에서는 UGameplayStatics::GetAllActorsOfClass 또는 TActorIterator를 이용해

월드(World) 내 특정 클래스에 해당하는 모든 액터를 가져올 수 있습니다.


 

📌 예제 코드

// AMyActor는 찾고자 하는 액터 클래스입니다.
void AMyActorFinder::FindMyActor(UWorld* World)
{
    if (!World) return;

    TArray<AActor*> FoundActors;
    UGameplayStatics::GetAllActorsOfClass(World, AMyActor::StaticClass(), FoundActors);

    for (AActor* Actor : FoundActors)
    {
        AMyActor* MyActor = Cast<AMyActor>(Actor);
        if (MyActor)
        {
            // 원하는 로직 실행
            UE_LOG(LogTemp, Warning, TEXT("찾은 액터: %s"), *MyActor->GetName());
        }
    }
}
 

🛠️ 코드 설명

항목
설명
UGameplayStatics::GetAllActorsOfClass
월드에서 특정 클래스의 모든 액터를 검색합니다.
TArray<AActor*> FoundActors
찾은 액터들을 저장할 배열입니다.
Cast<AMyActor>(Actor)
원하는 클래스 타입으로 캐스팅하여 작업할 수 있습니다.

 

Tip!

액터가 너무 많다면 Tag, 이름, 위치 등을 활용해 필터링하는 것도 좋은 방법입니다.


🚀 하나만 찾고 싶을 땐?

다음과 같이 TActorIterator를 사용하면, 가장 처음 찾은 액터 하나만 가져올 수 있습니다.

AActor* FoundActor = nullptr;
for (TActorIterator<AMyActor> It(World); It; ++It)
{
    FoundActor = *It;
    break;
}
 

✍️ 마무리

위 방법들을 활용하면 월드 내에서 원하는 액터를 효율적으로 탐색하고 사용할 수 있습니다.

언리얼의 C++ API는 강력하면서도 유연해서, 익숙해지면 정말 많은 걸 할 수 있어요!

 

 

 

728x90
반응형