본문 바로가기

프로그래밍

AttachToComponent 와 SetupAttachment 차이?

728x90

AttachToComponent와 SetupAttachment 개요

UE5에서 액터를 다른 액터의 컴포넌트에 부착하기 위해 사용되는 두 가지 주요 함수입니다. 각 함수는 다음과 같은 특징을 가지고 있습니다.

  • AttachToComponent:
    • 직접 부착: 다른 액터의 특정 컴포넌트에 액터를 즉시 부착합니다.
    • 동적 부착: 부착을 해제하거나 다른 컴포넌트에 다시 부착하는 등 동적으로 변경할 수 있습니다.
    • 유연성: 복잡한 부착 시나리오에 더 유연하게 사용할 수 있습니다.
  • SetupAttachment:
    • 지연 부착: 다음 프레임까지 부착이 지연됩니다.
    • 계층적 부착: 부모 액터의 계층 내에 있는 컴포넌트에 액터를 부착합니다.
    • 정적 부착: 일반적으로 게임 플레이 중에 변경되지 않는 정적 부착에 사용됩니다.
    • 효율성: 많은 부착을 처리할 때 더 효율적일 수 있습니다.

주요 차이점 비교

특징AttachToComponentSetupAttachment
부착 시점 즉시 지연
부착 유형 직접 계층적
부착 유연성 동적 정적 (일반적으로)
효율성 많은 부착 시 비효율적일 수 있음 많은 부착 시 효율적일 수 있음
Sheets로 내보내기

어떤 함수를 사용해야 할까요?

  • AttachToComponent: 즉각적이고 동적인 부착이 필요하거나 다른 액터의 특정 컴포넌트에 액터를 부착해야 할 때 사용합니다.
  • SetupAttachment: 부모 액터의 계층에 액터를 부착하고 즉각적인 부착이 필요하지 않을 때 사용합니다. 스켈레탈 메시나 자식 액터와 같은 정적 부착에 주로 사용됩니다.

예시

C++
// AttachToComponent:
AActor* actorToAttach = GetWorld()->SpawnActor<AActor>(AActor::StaticClass());
actorToAttach->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepWorldTransform);

// SetupAttachment:
AActor* childActor = GetWorld()->SpawnActor<AActor>(AActor::StaticClass(), GetActorLocation());
childActor->SetupAttachment(RootComponent);
코드를 사용할 때는 주의가 필요합니다.
 

첫 번째 예시에서 actorToAttachRootComponent에 즉시 직접 부착됩니다. 두 번째 예시에서 childActor는 다음 프레임에서 RootComponent에 부착되고 부모 액터의 자식이 됩니다.

요약

AttachToComponentSetupAttachment는 UE5에서 액터를 부착하는 데 사용되는 중요한 함수입니다. 각 함수는 고유한 특징과 사용 시나리오를 가지고 있으므로, 프로젝트의 요구 사항에 맞는 함수를 선택하는 것이 중요합니다.

728x90