KoreanFoodie's Study

[언리얼] 특정 액터에 Attached 된 액터 삭제하기 본문

Game Dev/Unreal C++ : Dev Log

[언리얼] 특정 액터에 Attached 된 액터 삭제하기

GoldGiver 2022. 4. 19. 16:22

AttachedActors   vs   ChildActors

만약 다음과 같이 부모 액터에 부착된 액터들을 삭제하려고 하면 어떻게 해야 할까?

 

만약 현재 액터에 자식으로 설정된 ActorComponent 들의 경우, 다음과 같은 코드로 조회할 수 있다.

TArray< AActor* > tempChildActors;
AActor* owner = GetOwner();
// SomeChildActor->SetOwner(this); 가 어디선가 실행되었다고 가정

owner->GetAllChildActors( tempChildActors, true );

uint32 count = tempChildActors.Num();

 

하지만 위와 같은 경우나, 무기를 캐릭터의 소켓에 부착 (AttachToComponent) 하는 경우, 자식인 액터 컴포넌트가 아니라, 그냥 소켓에 붙은 별도의 액터이다. 이 경우, 다음과 GetAttachedActors 를 활용한다.

TArray<AActor*> AttachedActors; 
GetAttachedActors(AttachedActors); 
for (auto* Attached : AttachedActors)
{    
   Attached->Destroy();
}

 

위의 코드를 사용하면 Owner 에 부착된 모든 액터들을 조회해 삭제할 수 있다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
Comments