본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 5 에서 TIterator<T> 는 무엇이며, 활용 방법은 어떻게 되나요?

by 밝음의기둥 2024. 10. 24.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 5 에서 TIterator<T> 는 무엇이며, 활용 방법은 어떻게 되는지 물어봤습니다.


질문 >

언리얼 엔진 5 에서 TIterator<T> 는 무엇이며, 활용 방법은 어떻게 되나요?

답변 >

**TIterator<T>**는 언리얼 엔진에서 사용되는 **템플릿 기반 반복자(iterator)**로, 특정 클래스 타입의 객체들을 **월드(World)**나 **레벨(Level)**에서 순회(Iteration)할 때 사용됩니다. 이를 통해 게임 내에서 생성된 특정 타입의 모든 액터나 오브젝트를 손쉽게 탐색할 수 있습니다. 이 반복자는 주로 UWorldTArray 같은 컬렉션에서 특정 클래스 타입의 객체를 검색하고 조작할 때 사용됩니다.


TActorIterator<T>와 활용

**TActorIterator<T>**는 언리얼 엔진에서 사용되는 반복자 중 하나로, **특정 클래스 타입의 액터(Actor)**를 순회합니다. 이 반복자를 사용하면 게임 내에서 모든 AActor의 인스턴스를 탐색하거나, 특정 클래스 또는 그 자식 클래스의 액터를 쉽게 조작할 수 있습니다.

사용 예시:

// 특정 클래스의 모든 액터 탐색
for (TActorIterator<AMyActor> ActorItr(GetWorld()); ActorItr; ++ActorItr)
{
    AMyActor* FoundActor = *ActorItr;  // 반복자에서 액터를 가져옴
    UE_LOG(LogTemp, Warning, TEXT("Found Actor: %s"), *FoundActor->GetName());
}

이 예제에서는 AMyActor 타입의 모든 액터를 순회하며, 각 액터의 이름을 로그로 출력합니다. TActorIterator는 특정 타입에 대한 액터들만 가져오기 때문에 매우 효율적입니다.


TObjectIterator<T>와 활용

**TObjectIterator<T>**는 모든 UObject 파생 클래스를 탐색하는 데 사용됩니다. 이 반복자는 메모리에 존재하는 모든 인스턴스를 순회할 수 있어, 게임 내에서 특정 오브젝트 타입의 전체 집합을 탐색할 때 유용합니다.

사용 예시:

for (TObjectIterator<UStaticMeshComponent> It; It; ++It)
{
    if (It->IsValidLowLevel() && It->GetWorld())
    {
        UE_LOG(LogTemp, Warning, TEXT("Found Mesh: %s"), *It->GetName());
    }
}

이 예제에서는 UStaticMeshComponent 타입의 모든 인스턴스를 순회하며, 유효한 객체를 로그에 출력합니다.


활용 시 주의점

  1. 성능 주의: TObjectIterator는 메모리상의 모든 객체를 순회하기 때문에, 게임의 큰 규모 프로젝트에서는 성능 저하를 일으킬 수 있습니다. 따라서 필요할 때만 사용해야 합니다.
  2. 가비지 컬렉션 연동: 반복자가 가비지 컬렉션과 연동되므로, 제거된 객체를 참조할 때 **유효성 검사(IsValidLowLevel)**를 수행하는 것이 좋습니다.
  3. 특정 클래스 필터링: TActorIterator는 특정 클래스와 그 자식 클래스만 순회하므로, 불필요한 검색을 피하고 성능을 높여줍니다.

TIterator<T>와 관련된 이러한 반복자들은 게임 내 객체 관리상태 조작을 손쉽게 해주는 강력한 도구입니다. 이를 통해 언리얼 엔진의 월드와 메모리에서 특정 타입의 객체를 유연하게 조작할 수 있습니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

 

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com

 


반응형