스토리지

Component 본문

Unreal Engine/0. Unreal 5

Component

ljw4104 2023. 7. 11. 19:39

Unity의 컴포넌트의 개념과 거의 유사하다.

  • 위의 이미지는 이미 Static Mesh 컴포넌트가 추가되었지만 아무것도 없을 때는 Default로 하나가 들어가 있다.
  • Root 컴포넌트는 기준이기 때문에 움직일 수 없고 각도를 변경할 수 없다. 스케일은 변경 가능하다.
  • Root 컴포넌트는 무조건 존재해야한다. 삭제가 불가능하다.

1. 코드에서 컴포넌트 추가

//Item.h

UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* ItemMesh;

먼저 헤더파일에 해당 컴포넌트의 주소를 담을 변수를 생성한다.

 

//Item.cpp

AItem::AItem()
{
	ItemMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("ItemMeshComponent"));
    RootComponent = ItemMesh;
}

해당 객체의 생성자에서 컴포넌트를 생성한다.

  • Unity에서 컴포넌트를 추가할 때 new를 사용하지 않고 AddComponent를 사용하지 않는 것처럼 언리얼에서도 new를 사용하지 않고 CreateDefaultSubobject 함수를 사용한다.
  • CreateDefaultSubobject<해당컴포넌트자료형>(컴포넌트이름) 이런 형식으로 만든다.
  • 해당 함수의 반환은 만든 컴포넌트의 주소가 반환이 된다.
  • 컴포넌트 생성후 만든 컴포넌트가 root가 되어야 할 때는 RootComponent(type: USceneComponent)에 대입한다.
  • 기존의 RootComponent에 연결되어 있던 것은 아무곳에서도 참조 안할 시 가비지 컬렉터에 의해 삭제되어진다.

'Unreal Engine > 0. Unreal 5' 카테고리의 다른 글

Forward Declaration (전방 선언)  (0) 2023.07.12
Pawn 추가  (0) 2023.07.12
UPROPERTY / UFUNCTION  (0) 2023.07.11
Unreal 로깅 2  (0) 2023.07.10
Unreal 로깅  (0) 2023.07.07
Comments