[언리얼]
언리얼 오브젝트(Unreal Object) - Outer
Outer
오브젝트의 “Outer"는 그 오브젝트를 "소유"하는 오브젝트입니다. 예를 들어 컴포넌트는 그 액터 또는 부모 컴포넌트가 소유하고, 액터는 그 레벨이 소유합니다. UObject 에서 파생된 클래스의 오브젝트를 생성할 때마다, 그 오브젝트에 Outer 를 제공합니다. (CreateDefaultSubobject는 암시적으로 현재 오브젝트를 Outer 로 제공합니다.)
때로는 오브젝트가 해당 오브젝트를 소유하지 않고 다른 오브젝트에 대한 포인터를 가질 수 있습니다. 예를 들어, UNavMovementComponent는 형제 UPathFollowingComponent에 대한 포인터를 가지고 있습니다. 이 경우 UPathFollowingComponent는 UNavMovementComponent를 Outer로 가지지 않습니다.
Owner vs Outer
- Owner: Owner는 UObject의 소유자를 나타내는 포인터입니다. UObject는 UObject 클래스를 상속하는 모든 객체를 포함하는 범용 객체입니다. Owner는 일반적으로 UObject가 속한 다른 UObject를 가리키는 포인터입니다. Owner를 통해 객체 간의 소유 계층을 구성할 수 있습니다. 예를 들어, Actor는 Owner로서 Level을 가질 수 있으며, Component는 Owner로서 Actor를 가질 수 있습니다. Owner는 주로 객체의 소유 및 수명 주기를 관리하는 데 사용됩니다.
- Outer: Outer는 UObject의 Outer 컨테이너를 나타내는 포인터입니다. UObject는 개별 객체 또는 다른 객체에 포함될 수 있는 컨테이너 개념을 가지고 있습니다. Outer는 일반적으로 UObject가 속한 컨테이너 객체를 가리키는 포인터입니다. Outer를 통해 객체 간의 계층 구조를 구성할 수 있습니다. 예를 들어, Actor는 Outer로서 Level을 가지며, Component는 Outer로서 Actor를 가질 수 있습니다. Outer는 주로 UObject의 구성 및 계층 관계를 나타내는 데 사용됩니다.
요약하면, Owner는 UObject의 소유자를 가리키는 포인터이며, 객체 간의 소유 관계를 관리하는 데 사용됩니다. Outer는 UObject의 Outer 컨테이너를 가리키는 포인터이며, 객체 간의 계층 구조를 나타내는 데 사용됩니다.
UE5에서 "Owner"와 "Outer"는 객체간의 계층적인 관계를 나타내는 개념입니다:
- Owner: 객체의 Owner는 해당 객체를 소유하거나 제어하는 객체를 의미합니다. 이는 일대일의 관계를 나타내며, 한 객체가 다른 객체를 소유합니다. Owner는 소유된 객체의 라이프사이클을 관리하며, 일부 권한이나 제어권을 가질 수 있습니다.
- Outer: 객체의 Outer는 해당 객체를 직접 포함하고 있는 컨테이너나 부모 객체를 의미합니다. 이는 객체 간의 계층 구조에서 객체가 다른 객체 내부에 중첩되어 있는 관계를 나타냅니다. Outer는 포함된 객체에 대한 계층적인 문맥을 제공하며, 객체의 조직화나 그룹화 등 다양한 목적으로 활용될 수 있습니다.
요약하면, "Owner"는 객체를 소유하거나 제어하는 엔티티를 나타내며, "Outer"는 객체를 직접 포함하고 있는 컨테이너나 부모 객체를 나타냅니다.