언리얼 엔진에는 CreateDefaultSubobject<>()가 있다.
이는 탬플릿 함수로 탬플릿 함수는 선택된 타입에 적응하기 때문에 특정 타입을 선택하면 CreateDefaultSubobject가 이 타입에 적응한다. 생성하고자 하는 타입을 CreateDefaultSubobject에 전달하는데 정칙 함수와 다르게 이 함수에는 꺾쇠 괄호가 존재한다.
생성할 타입은 <> 여기로 전달한다. 괄호 안에는 인수가 들어간다. 이는 하위 오브젝트에 할당할 이름이 된다. 이는 변수 이름과 다른 개념이며 스트링 리터럴로 전달된다.
예시- 스태틱 매시 만들고 싶다!
CreateDefaultSubobject(TEXT("COOL MESH"))
GetDefaultSubobjectByName( )-> 특정 오브젝트에 속한 하위 오브젝트를 검색하여 특정 이름을 전달하여 호출하면 그 이름과 같은 하위 오브젝트를 찾아준다
CreateDefaultSubobject는 새로 생성된 컴포넌트의 주소를 반환한다. 나의 경우 UStaticMeshComponent를 타입으로 전달하면 UStaticMeshComponent의 주소를 받고 이를 포인터에 저장할 수 있는데 이는 포인터가 주소를 저장하기 때문이다.
예를 들어 Mesh라는 UStaticMeshComponent포인터를 만든다고 가정해본다.
UStaticMeshComponent* Mesh;
이 경우 CreateDefaultSubobject에서 반환된 주소를 가져와 메시 포인터에 주소를 저장한다.
UStaticMeshComponent* Mesh;
Mesh= CreateDefaultSubobject<UStaticMeshComponent>(TEXT("COOL MESH"));
CreateDefaultSubobject 이거 뭐하는 친군지 잘 몰랐는데 단번에 이해갔다. 와웅