Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

선언한 객체를 언리얼 엔진이 자동으로 관리하도록 하는 매크로이다.

  • A 혹은 U로 시작하는 언리얼 오브젝트는 GC를 통해 관리된다.
  • T 등으로 시작하는 C++ 객체는 스마트 포인터를 통해 관리된다.
  • 블루프린트에서 사용하기 위한 여러가지 옵션도 제공한다.

 

 

언리얼 오브젝트가 되기 위해서는 다음을 만족해야 한다.

  • 클래스 선언 위에 UCLASS() 매크로가 있어야 한다.
  • 클래스 내부에 GENERATED_BODY() 매크로가 있어야 한다.
  • 액터는 A, 액터가 아니면 U 등 규칙에 맞는 접두사가 붙어야 한다.
  • "클래스.generated.h" 헤더를 포함해야 한다.
    언리얼 헤더 툴에 의해 컴파일 때마다 자동으로 새로 생성된다.
  • 클래스 선언 앞에 모듈_API 키워드를 추가해 모듈 내 클래스 정보를 외부에 공개해야 한다.
    실제로는 _declspec(dllexport)와 같다.

 

 

또한, 값 유형에 대한 초기화를 지원한다.

  • int: 0
  • float: 0.0f
  • FVector: (0, 0, 0)
  • ...

 

 

VisibleAnywhere

  • 에디터에서 값을 확인할 수만 있다.
  • 단, 컴포넌트 같은 객체 유형의 경우 다른 컴포넌트로 교체할 수 없다는 의미이며 컴포넌트 자체의 속성 값들은 변경할 수 있다.

EditAnywhere

  • 에디터에서 값을 수정할 수 있다.

 

 

private 변수는 클래스 외부로 노출이 불가능하지만 EditAnywhere를 설정하면서 Meta=(AllowPrivateAccess=true)를 함께 설정해주면 에디터에서 값을 수정할 수 있다.

 

유니티의 SerializeField와 비슷한 기능이다.

 

 

에디터에서 private 변수의 값을 수정할 수 있다.

 

 

Edit / Visible

  • 수정 가능 / 보기만 가능

Anywhere / DefaultsOnly / InstanceOnly

  • 둘 다 가능 / 블루프린트 상 기본값에서만 / 뷰포트 상 객체의 값에서만

 

예) VisibleDefaultsOnly

블루프린트의 기본값에서만 볼 수 있다.

 

 

언리얼 헤더 툴은 컴파일 때 UPROPERTY() 매크로를 분석한 결과를 "클래스.generated.h"로 생성해 사용한다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그