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;
이 메타 태그를 추가하면 인티저는 일반적인 이름이 붙는 플래그 드롭다운 목록으로 표시되어, 개별적으로 켜고 끄는 식으로 편집할 수 있습니다.
비트플래그의 이름을 커스터마이징하기 위해서는 먼저, 반드시 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 가 됩니다.
열거된 유형은 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"));
세 가지 스트링 유형에 대해서, 언제 사용되고 어떻게 작업하는지 자세한 내용은, 스트링 처리 관련 문서 를 참고해 주시기 바랍니다.
프로퍼티 지정자
프로퍼티 선언시, 프로퍼티 지정자 를 붙여 프로퍼티가 엔진과 에디터의 다양한 부분과 어떻게 작동하는지를 제어할 수 있습니다.
프로퍼티 지정자 |
효과 |
|||
---|---|---|---|---|
|
이 프로퍼티는 디테일 패널의 고급 (드롭다운) 섹션에 들어갑니다. |
|||
|
AssetRegistrySearchable (애셋 레지스트리 검색가능) 지정자는 이 프로퍼티와 그 값이, 이것을 멤버 변수로 포함하는 클래스 인스턴스에 대한 애셋 레지스트리에 자동 추가됨을 나타냅니다. 구조체 프로퍼티나 파라미터에 사용하는 것은 적법하지 않습니다. |
|||
|
멀티캐스트 델리게이트하고만 사용할 수 있습니다. 프로퍼티를 블루프린트에서 할당할 수 있도록 노출시킵니다. |
|||
|
이 프로퍼티는 멀티캐스트 델리게이트여야 합니다. 블루프린트에서,
|
|||
|
멀티캐스트 델리게이트 전용입니다. 프로퍼티를 노출시켜야 블루프린트 코드에서 호출할 수 있습니다. |
|||
|
이 프로퍼티는 커스텀 액세서 함수를 지정합니다. 또한
|
|||
|
이 프로퍼티는 블루프린트에서 읽을 수는 있지만 변경은 안됩니다.
|
|||
|
이 프로퍼티는 블루프린트에서 읽거나 쓸 수 있습니다.
|
|||
|
이 프로퍼티에는 커스텀 뮤테이터 함수가 있으며, 묵시적으로
|
|||
`Category="TopCategory |
SubCategory |
..."` |
블루프린트 편집 툴에 이 프로퍼티를 표시할 때의 카테고리를 지정합니다. 중첩 카테고리는 ` |
` 연산자로 정의합니다. |
|
이 프로퍼티는 환경설정 가능해집니다. 현재 값은 클래스와 연결된 .ini 파일에 저장되며, 생성시 로드됩니다. 디폴트 프로퍼티에 값을 줄 수는 없습니다.
|
|||
|
이 프로퍼티를 (복사/붙여넣기든, 이진 복제든) 어떤 식으로든 복제할 때 클래스 기본 값으로 리셋시킬지를 나타냅니다. |
|||
|
이 프로퍼티는 아키타입이나 인스턴스 양쪽의 프로퍼티 창에서 편집할 수 있습니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다. |
|||
|
이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, 아키타입 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다. |
|||
|
동적 배열 전용입니다. 사용자가 언리얼 에디터 프로퍼티 창을 통해 배열 길이를 바꾸지 못하도록 합니다. |
|||
|
사용자가 언리얼 에디터의 프로퍼티 인스펙터 안에서 이 프로퍼티에 참조된 오브젝트의 프로퍼티를 편집할 수 있도록 합니다 (오브젝트 레퍼런스 배열을 포함한 오브젝트 레퍼런스 전용입니다). |
|||
|
이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, 아키타입이 아닌 인스턴스 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다. |
|||
|
오브젝트 (또는 오브젝트 배열) 프로퍼티 전용입니다. 이 프로퍼티에 할당된 오브젝트는 오브젝트를 (복사/붙여넣기할 때의) 복사하기나 T3D 로 익스포트할 때, 오브젝트 레퍼런스 자체만 출력하는 것이 아니라 서브오브젝트 블럭 전체로 익스포트해야 함을 나타냅니다. |
|||
|
|
|||
|
오브젝트 (
|
|||
|
이 값은 마티네의 트랙으로 시간에 따라 구동시킬 수 있음을 나타냅니다. |
|||
|
이 프로퍼티 값은 정의된 현지화 값이 있습니다. 거의 스트링에 사용됩니다.
|
|||
|
이 프로퍼티는 네이티브입니다. 즉 C++ 코드가 시리얼라이즈와 가비지 컬렉션으로의 노출을 담당합니다. |
|||
|
에디터에서 이 오브젝트 레퍼런스를 none (없음)으로 설정하지 못하게 합니다. 에디터에서 clear(비우기) (및 browse(둘러보기)) 버튼을 숨깁니다. |
|||
|
네이티브 클래스 전용입니다. 이 프로퍼티는 자동 생성 클래스 선언에 포함시켜서는 안됩니다. |
|||
|
이 프로퍼티는 에디터에서 플레이(PIE) 세션 도중이 아닌 경우 복제 도중 기본값으로 리셋됩니다. |
|||
|
이 프로퍼티에 대한 변경은 에디터의 되돌리기/다시하기 히스토리에 포함되지 않습니다. |
|||
|
리플리케이션을 생략합니다. 서비스 요청 함수의 구조체 멤버와 파라미터에만 적용됩니다. |
|||
|
이 프로퍼티는 네트워크를 통해 리플리케이트됩니다. |
|||
|
|
|||
|
구조체 프로퍼티 전용입니다. (오브젝트 레퍼런스가 아직 네트워크를 통한 시리얼라이즈에 사용할 수 없는 상태라던가 해서) 이 프로퍼티를 완전히 전송하는 데 실패한 경우 그 리플리케이션을 재시도합니다. 단순 레퍼런스라면 기본값이지만, 구조체의 경우 보통 대역폭 비용으로 인해 바람직하지 않으므로, 직접 지정하지 않는 한 비활성화되는 옵션입니다. |
|||
|
이 지정자는 프로퍼티 레벨에서 체크포인트/저장 시스템용 필드를 명시적으로 포함시키기 위한 단순한 방법입니다. 이 옵션은 저장된 게임의 일부로 포함시키려는 모든 필드에 설정해 두면, 프록시 아카이버를 사용하여 읽기/쓰기 가능합니다. |
|||
|
네이티브 프로퍼티는 텍스트 (
|
|||
|
이 프로퍼티는 시리얼라이즈되지 않지만, (복사/붙여넣기 등) 텍스트 포맷으로 익스포트는 가능합니다. |
|||
|
Visible 또는 Editable 프로퍼티는 디테일 패널에 표시되며, "Advanced" (고급) 섹션을 열지 않아도 보입니다. |
|||
|
이 프로퍼티는 (복사/붙여넣기 등의) 텍스트 포맷으로 익스포트되지 않습니다. |
|||
|
이 프로퍼티는 휘발성이라, 저장 또는 로드되지 않습니다. 이런 식의 지정자가 붙은 프로퍼티는 로드 시간에 0 으로 채워집니다. |
|||
|
이 프로퍼티는 모든 프로퍼티 창에 보이지만 편집할 수 없음을 나타냅니다. 이 지정자는 "Edit" 지정자와 호환되지 않습니다. |
|||
|
이 프로퍼티는 아키타입에 대한 프로퍼티 창에서 보이기만 할 뿐, 편집할 수는 없음을 나타냅니다. 이 지정자는 어떤 "Edit" 지정자와도 호환되지 않습니다. |
|||
|
이 프로퍼티는 아키타입이 아닌 인스턴스에 대한 프로퍼티 창에서 보이기만 할 뿐, 편집할 수는 없음을 나타냅니다. 이 지정자는 어떤 "Edit" 지정자와도 호환되지 않습니다. |