컴포지션

  • 객체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지 보수가 어려움이 있다.
  • 컴포지션은 객체 지향 설계에서 Has-A 관계를 구현하는 설계 방법
  • 컴포지션 활용
    • 복합적인 기능을 가진 거대한 클래스를 효과적으로 설계하는 데 유용하게 사용할 수 있습니다.

언리얼 엔진에서의 컴포지션 구현 방법

  • 하나의 언리얼 오브젝트에는 항상 클래스 기본 오브젝트 CDO 가 있다.
  • 언리얼 오브젝트에 다른 언리얼 오브젝트를 조합할 때 두 가지의 선택지가 존재한다.
    • 방법 1 : CDO 에 미리 언리얼 오브젝트를 생성해 조합한다(필수로 포함해야 하는 경우).
    • 방법 2 : CDO 에 빈 포인터만 넣고 런타임에서 언리얼 오브젝트를 생성해 조합한다(선택적으로 포함해야 하는 경우).
  • 언리얼 오브젝트를 생성할 때 컴포지션 정보를 구축할 수 있다.
    • 내가 소유한 언리얼 오브젝트를 Subobject라고 한다.
    • 나를 소유한 언리얼 오브젝트를 Outer 라고 한다.

CreateDefaultSubobject<T>(FName SubobjectName)를 사용하여 CDO가 생성 될때 생성.(생성자에서만 호출해야 함 )
런타임에 필요시에 NewObject()를 사용 하여 생성.

+ Recent posts