프로퍼티

게임플레이 클래스에 대한 프로퍼티 생성 및 구현 관련 레퍼런스입니다.

Choose your operating system:

Windows

macOS

Linux

프로퍼티 선언

프로퍼티는 표준 C++ 변수 문법, 즉 앞에 UPROPERTY 매크로에 프로퍼티 메타데이터와 변수 지정자를 붙여 선언합니다.

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

코어 데이터 유형

정수형

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

변수 유형

설명

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

비트마스크로

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

UPROPERTY(EditAnywhere, Meta = (Bitmask))
int32 BasicBits;

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

GenericBitmask.png

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

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

이 UENUM 을 생성한 이후 BitmaskEnum 메타 태그로 참조할 수 있는데, 이런 식입니다:

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

이 변경 이후 드롭다운 박스에 나열되는 비트플래그는 열거된 클래스 항목의 이름과 값을 받습니다.위 예제에서 ECB_Red 값은 0 으로, 체크하면 (ColorFlags 에 1 을 더해) 비트 0 이 가동된다는 뜻입니다. ECB_Green 은 (ColorFlags 에 2 를 더해) 비트 1 에 해당하며, ECB_Blue 는 (ColorFlags 에 4 를 더해) 비트 2 가 됩니다.

CustomBitmask.png

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

부동 소수점 유형

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

부울 유형

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

uint32 bIsHungry : 1;
bool bIsThirsty;

스트링

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

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

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

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

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

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

세 가지 스트링 유형에 대해서, 언제 사용되고 어떻게 작업하는지 자세한 내용은, 스트링 처리 관련 문서 를 참고해 주시기 바랍니다.

프로퍼티 지정자

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

프로퍼티 지정자

효과

AdvancedDisplay

이 프로퍼티는 디테일 패널의 고급 (드롭다운) 섹션에 들어갑니다.

AssetRegistrySearchable

AssetRegistrySearchable (애셋 레지스트리 검색가능) 지정자는 이 프로퍼티와 그 값이, 이것을 멤버 변수로 포함하는 클래스 인스턴스에 대한 애셋 레지스트리에 자동 추가됨을 나타냅니다. 구조체 프로퍼티나 파라미터에 사용하는 것은 적법하지 않습니다.

BlueprintAssignable

멀티캐스트 델리게이트하고만 사용할 수 있습니다. 프로퍼티를 블루프린트에서 할당할 수 있도록 노출시킵니다.

BlueprintAuthorityOnly

이 프로퍼티는 멀티캐스트 델리게이트여야 합니다. 블루프린트에서, BlueprintAuthorityOnly 지정자가 붙은 이벤트만 받습니다.

BlueprintCallable

멀티캐스트 델리게이트 전용입니다. 프로퍼티를 노출시켜야 블루프린트 코드에서 호출할 수 있습니다.

BlueprintGetter=GetterFunctionName

이 프로퍼티는 커스텀 액세서 함수를 지정합니다. 또한 BlueprintSetter 또는 BlueprintReadWrite 지정자가 지정되지 않으면, BlueprintReadOnly 로 간주합니다.

BlueprintReadOnly

이 프로퍼티는 블루프린트에서 읽을 수는 있지만 변경은 안됩니다. BlueprintReadWrite 지정자와 호환되지 않습니다.

BlueprintReadWrite

이 프로퍼티는 블루프린트에서 읽거나 쓸 수 있습니다. BlueprintReadOnly 지정자와 호환되지 않습니다.

BlueprintSetter=SetterFunctionName

이 프로퍼티에는 커스텀 뮤테이터 함수가 있으며, 묵시적으로 BlueprintReadWrite 지정자가 붙습니다. 참고로 뮤테이터 함수는 "같은 클래스 이름으로 그 일부를 따서 지어야 합니다.

`Category="TopCategory

SubCategory

..."`

블루프린트 편집 툴에 이 프로퍼티를 표시할 때의 카테고리를 지정합니다. 중첩 카테고리는 `

` 연산자로 정의합니다.

Config

이 프로퍼티는 환경설정 가능해집니다. 현재 값은 클래스와 연결된 .ini 파일에 저장되며, 생성시 로드됩니다. 디폴트 프로퍼티에 값을 줄 수는 없습니다. BlueprintReadOnly 로 간주합니다.

DuplicateTransient

이 프로퍼티를 (복사/붙여넣기든, 이진 복제든) 어떤 식으로든 복제할 때 클래스 기본 값으로 리셋시킬지를 나타냅니다.

EditAnywhere

이 프로퍼티는 아키타입이나 인스턴스 양쪽의 프로퍼티 창에서 편집할 수 있습니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.

EditDefaultsOnly

이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, 아키타입 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.

EditFixedSize

동적 배열 전용입니다. 사용자가 언리얼 에디터 프로퍼티 창을 통해 배열 길이를 바꾸지 못하도록 합니다.

EditInline

사용자가 언리얼 에디터의 프로퍼티 인스펙터 안에서 이 프로퍼티에 참조된 오브젝트의 프로퍼티를 편집할 수 있도록 합니다 (오브젝트 레퍼런스 배열을 포함한 오브젝트 레퍼런스 전용입니다).

EditInstanceOnly

이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, 아키타입이 아닌 인스턴스 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.

Export

오브젝트 (또는 오브젝트 배열) 프로퍼티 전용입니다. 이 프로퍼티에 할당된 오브젝트는 오브젝트를 (복사/붙여넣기할 때의) 복사하기나 T3D 로 익스포트할 때, 오브젝트 레퍼런스 자체만 출력하는 것이 아니라 서브오브젝트 블럭 전체로 익스포트해야 함을 나타냅니다.

GlobalConfig

Config 과 비슷하지만 서브클래스에서 덮어쓸 수 없습니다. 디폴트 프로퍼티에 값을 줄 수 없습니다. BlueprintReadOnly 로 간주합니다.

Instanced

오브젝트 ( UCLASS ) 프로퍼티 전용입니다. 이 클래스의 인스턴스가 생성될 때, 이 프로퍼티에 기본으로 할당된 오브젝트 고유 사본을 쥐어줍니다. 클래스 디폴트 프로퍼티에 정의된 서브오브젝트 인스턴싱에 사용됩니다. EditInline Export 로 간주됩니다.

Interp

이 값은 마티네의 트랙으로 시간에 따라 구동시킬 수 있음을 나타냅니다.

Localized

이 프로퍼티 값은 정의된 현지화 값이 있습니다. 거의 스트링에 사용됩니다. ReadOnly 로 간주합니다.

Native

이 프로퍼티는 네이티브입니다. 즉 C++ 코드가 시리얼라이즈와 가비지 컬렉션으로의 노출을 담당합니다.

NoClear

에디터에서 이 오브젝트 레퍼런스를 none (없음)으로 설정하지 못하게 합니다. 에디터에서 clear(비우기) (및 browse(둘러보기)) 버튼을 숨깁니다.

NoExport

네이티브 클래스 전용입니다. 이 프로퍼티는 자동 생성 클래스 선언에 포함시켜서는 안됩니다.

NonPIEDuplicateTransient

이 프로퍼티는 에디터에서 플레이(PIE) 세션 도중이 아닌 경우 복제 도중 기본값으로 리셋됩니다.

NonTransactional

이 프로퍼티에 대한 변경은 에디터의 되돌리기/다시하기 히스토리에 포함되지 않습니다.

NotReplicated

리플리케이션을 생략합니다. 서비스 요청 함수의 구조체 멤버와 파라미터에만 적용됩니다.

Replicated

이 프로퍼티는 네트워크를 통해 리플리케이트됩니다.

ReplicatedUsing=FunctionName

ReplicatedUsing 지정자는 네트워크를 통해 프로퍼티를 업데이트할 때 실행되는 콜백 함수를 지정합니다.

RepRetry

구조체 프로퍼티 전용입니다. (오브젝트 레퍼런스가 아직 네트워크를 통한 시리얼라이즈에 사용할 수 없는 상태라던가 해서) 이 프로퍼티를 완전히 전송하는 데 실패한 경우 그 리플리케이션을 재시도합니다. 단순 레퍼런스라면 기본값이지만, 구조체의 경우 보통 대역폭 비용으로 인해 바람직하지 않으므로, 직접 지정하지 않는 한 비활성화되는 옵션입니다.

SaveGame

이 지정자는 프로퍼티 레벨에서 체크포인트/저장 시스템용 필드를 명시적으로 포함시키기 위한 단순한 방법입니다. 이 옵션은 저장된 게임의 일부로 포함시키려는 모든 필드에 설정해 두면, 프록시 아카이버를 사용하여 읽기/쓰기 가능합니다.

SerializeText

네이티브 프로퍼티는 텍스트 ( ImportText , ExportText ) 로 시리얼라이즈해야 합니다.

SkipSerialization

이 프로퍼티는 시리얼라이즈되지 않지만, (복사/붙여넣기 등) 텍스트 포맷으로 익스포트는 가능합니다.

SimpleDisplay

Visible 또는 Editable 프로퍼티는 디테일 패널에 표시되며, "Advanced" (고급) 섹션을 열지 않아도 보입니다.

TextExportTransient

이 프로퍼티는 (복사/붙여넣기 등의) 텍스트 포맷으로 익스포트되지 않습니다.

Transient

이 프로퍼티는 휘발성이라, 저장 또는 로드되지 않습니다. 이런 식의 지정자가 붙은 프로퍼티는 로드 시간에 0 으로 채워집니다.

VisibleAnywhere

이 프로퍼티는 모든 프로퍼티 창에 보이지만 편집할 수 없음을 나타냅니다. 이 지정자는 "Edit" 지정자와 호환되지 않습니다.

VisibleDefaultsOnly

이 프로퍼티는 아키타입에 대한 프로퍼티 창에서 보이기만 할 뿐, 편집할 수는 없음을 나타냅니다. 이 지정자는 어떤 "Edit" 지정자와도 호환되지 않습니다.

VisibleInstanceOnly

이 프로퍼티는 아키타입이 아닌 인스턴스에 대한 프로퍼티 창에서 보이기만 할 뿐, 편집할 수는 없음을 나타냅니다. 이 지정자는 어떤 "Edit" 지정자와도 호환되지 않습니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기