언리얼 C++ 프로그래밍

[언리얼 C++] 프로퍼티 선언

언린이 2021. 7. 29. 21:27

1. 프로퍼티 선언

UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
Type VariableName;

프로퍼티는 위의 예제 코드처럼 표준 C++ 변수 문법 위에 UPROPERTY 매크로를 사용하여 선언합니다.

그리고 UPROPERTY 매크로에 프로퍼티 메타데이터와 변수 지정자를 붙여 엔진 및 에디터에서의 작동 방식을 제어할 수 있습니다.

 

 

2. 코어 데이터 유형

  • 정수형
변수 유형 설명
uint8 8-bit unsigned
uint16 16-bit unsigned
uint32 32-bit unsigned
uint64 64-bit unsigned
int8 8-bit signed
int16 16-bit signed
int32 32-bit signed
int64 64-bit signed

정수 데이터 유형의 규칙은 int나 uint 뒤에 사이즈를 비트 단위로 붙이는 것입니다.

 

 

  • 비트마스크
UPROPERTY(EditAnywhere, Meta = (Bitmask))
int32 BasicBits;

정수 프로퍼티는 에디터에 비트마스크로 노출시킬 수 있습니다. 정수 프로퍼티를 비트마스크로 마킹하려면, 메타 섹션에 bitmask를 추가하면 됩니다.

 

메타 태그를 추가하면 일반적인 이름이 붙는 플래그 드롭다운 목록으로 표시되어, 개별적으로 켜고 끄는 식으로 편집할 수 있습니다.

 

UENUM(Meta = (Bitflags))
enum class EColorBits
{
    ECB_Red,
    ECB_Green,
    ECB_Blue
};

비트 플래그의 이름을 커스터마이징하기 위해서는 먼저 bitflags 메타 태그를 붙여 UENUM을 생성해야 합니다.

 

UPROPERTY(EditAnywhere, Meta = (Bitmask, BitmaskEnum = "EColorBits"))
int32 ColorFlags;

UENUM을 생성한 후, UPROPERTY 매크로에 BitmaskEnum 메타 태그를 사용하여 생성한 UENUM을 참조하면 됩니다.

 

BitmaskEnum 메타 태그를 지정하면, 드롭다운 박스에 나열되는 비트 플래그는 열거된 클래스 항목의 이름과 값을 받게됩니다.

단, 열거된 유형은 32개 항목 이상의 값을 가질 수 있지만, 처음 32개의 값만 프로퍼티 에디터 UI에 연결된 비트마스크에 보입니다. 비슷하게, 명시된 값 항목을 받기는 하지만, 명시된 값이 0과 31 사이가 아닌 항목은 드롭다운에 포함되지 않습니다.

 

 

  • 부동 소수점 유형

언리얼 엔진에서는 표준 C++ 부동 소수점 유형인 float와 double을 사용합니다.

 

 

  • 부울 유형
uint32 bIsHungry : 1;
bool bIsThirsty;

부울 유형은 C++ bool 키워드 또는 비트 필드로 나타낼 수 있습니다.

 

 

  • 스트링 유형

언리얼 엔진에서는 3가지 유형의 스트링을 지원합니다.

 

- FString은 고정적인 캐릭터 동적 배열 스트링 유형입니다.

- FName은 글로벌 스트링 테이블로 된 변경 불가능한 대소문자를 구분하지 않는 스트링에 대한 레퍼런스입니다. FString 보다 크기가 작아 전송에 효율적이나 조작하기가 더 어렵습니다.

- FText는 현지화 처리를 위해 고안된 보다 탄탄한 스트링 표현입니다.

 

MyDogPtr->DogName = FName(TEXT("Samson Aloysius"));

대부분의 경우, 언리얼은 캐릭터에 대해 TCHAR 유형에 의존합니다. TEXT() 매크로는 TCHAR 리터럴을 나타내는데 사용할 수 있습니다.

3가지 유형의 스트링에 대한 처리는 [언리얼 C++] 스트링 처리 (tistory.com) 글을 참고하시기 바랍니다.

 

 

3. 프로퍼티 지정자

프로퍼티 지정자 효과
BlueprintCallable 멀티캐스트 델리게이트 전용입니다. 프로퍼티를 노출시켜야 블루프린트 코드에서 호출할 수 있습니다.
BlueprintReadOnly 이 프로퍼티는 블루프린트에서 읽을 수는 있지만 변경은 안됩니다. BlueprintReadWrite 지정자와 호환되지 않습니다.
BlueprintReadWrite 이 프로퍼티는 블루프린트에서 읽거나 쓸 수 있습니다. BlueprintReadOnly 지정자와 호환되지 않습니다.
Config 이 프로퍼티는 환경설정 가능해집니다. 현재 값은 클래스와 연결된 .ini 파일에 저장되며, 생성시 로드됩니다. 디폴트 프로퍼티에 값을 줄 수는 없습니다. BlueprintReadOnly 로 간주합니다.
EditAnywhere 이 프로퍼티는 아키타입이나 인스턴스 양쪽의 프로퍼티 창에서 편집할 수 있습니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.

프로퍼티 선언시, 위 표에 있는 프로퍼티 지정자를 붙여 프로퍼티가 엔진과 에디터의 다양한 부분에서 어떤식으로 작동할지를 제어할 수 있습니다.

더 많은 프로퍼티 지정자에 대한 정보를 얻고 싶다면 프로퍼티 지정자 | 언리얼 엔진 문서 (unrealengine.com) 글을 참고하시기 바랍니다.