UObject에서 파생.
UCLASS 매크로를 사용해 커스텀 C++ 오브젝트를 선언하면 UE4 클래스처럼 동작하는 커스텀 C++ 클래스를 선언 할 수도 있다.
UCLASS 매크로를 사용하면 할당과 해제를 할 때 클래스가 UE4 의 스마트 포인터와 메모리 관리 루틴을 사용하게 된다.
: UPROPERTY의 역할은 기본적으로 언리얼 리플렉션 시스템에 해당 프로퍼티가 있음을 알리는 것이다. 빌드 시에 UHT(Unreal Header Tool)이 이 매크로를 감지하고 리플렉션 유형에 추가하게 된다. 이렇게 언리얼 리플렉션 시스템에 추가된 UPROPERTY는 가바지 콜렉션에 의해 생명 주기가 관리되며, 리플렉션을 통해 이 멤버 변수의 이름, 유형 응을 런티임 중에 확인할 수 있다.
| 지정자 | ReadWrite | ReadOnly | Setter | Getter |
|---|---|---|---|---|
| Blueprint | 블루프린트에서 읽거나 쓸 수 있음 | 블루프린트에서 읽을 수 있지만 변경은 안 됨 | BlueprintReadWrite을 바탕으로 블루프린트에서 변수를 Set할 때 | - |
| 지정자 | DefaultsOnly | InstanceOnly | Anywhere |
|---|---|---|---|
| Edit | 아키타입상에서만 값을 편집할 경우 | 인스턴스상에서만 값을 편집해야 할 경우 | 아키타입 또는 인스턴스 모두에서 범용적으로 값을 편집해야 할 경우 |
| Visible | 아키타입에서만 보여야 할 경우 | 인스턴스에서만 보여야 할 경우 | 아키타입 또는 인스턴스 모두에서 보일 값이여야 할 경우 |
언리얼 오브젝트에는 직렬화 기능이 있어서 오브젝트의 UPROPERTY 속성을 저장하고 로딩할 수 있다.
컴포넌트의 스탯 중 CurrentHP 값은 게임을 시작할 때마다 변경되므로 이 값을 보관하는 것은 의미가 없다. 오히려 오브젝트를 저장할 때 필요없는 디스크 공간만 차지한다.
이러한 속성에는 Transient 키워드를 추가해 해당 속성을 직렬화에서 제외시키는 것이 좋다.