[언리얼]

언리얼 오브젝트(Unreal Object) - Outer

Outer

오브젝트의 “Outer"는 그 오브젝트를 "소유"하는 오브젝트입니다. 예를 들어 컴포넌트는 그 액터 또는 부모 컴포넌트가 소유하고, 액터는 그 레벨이 소유합니다. UObject 에서 파생된 클래스의 오브젝트를 생성할 때마다, 그 오브젝트에 Outer 를 제공합니다. (CreateDefaultSubobject는 암시적으로 현재 오브젝트를 Outer 로 제공합니다.)

때로는 오브젝트가 해당 오브젝트를 소유하지 않고 다른 오브젝트에 대한 포인터를 가질 수 있습니다. 예를 들어, UNavMovementComponent는 형제 UPathFollowingComponent에 대한 포인터를 가지고 있습니다. 이 경우 UPathFollowingComponent는 UNavMovementComponent를 Outer로 가지지 않습니다.

Owner vs Outer

요약하면, Owner는 UObject의 소유자를 가리키는 포인터이며, 객체 간의 소유 관계를 관리하는 데 사용됩니다. Outer는 UObject의 Outer 컨테이너를 가리키는 포인터이며, 객체 간의 계층 구조를 나타내는 데 사용됩니다.

UE5에서 "Owner"와 "Outer"는 객체간의 계층적인 관계를 나타내는 개념입니다:

요약하면, "Owner"는 객체를 소유하거나 제어하는 엔티티를 나타내며, "Outer"는 객체를 직접 포함하고 있는 컨테이너나 부모 객체를 나타냅니다.