클래스, 열거형(enum), 열거형 값, 함수, 구조체, 프로퍼티, 인터페이스 선언시, 메타데이터 지정자를 붙여 엔진과 에디터의 다양한 부분과 어떻게 작동하는지를 제어할 수 있습니다.
메타데이터 지정자 사용법은 일반적인 클래스, 함수, 인터페이스 지정자와는 다릅니다.
클래스, 인터페이스, 함수나 프로퍼티를 선언할 때 지정자를 붙여 엔진 및 에디터 다양한 부분에 대한 작동방식을 지정할 수 있습니다. 메타데이터 지정자를 사용하려면, UCLASS
, UINTERFACE
, UFUNCTION
, UPROPERTY
매크로에 다음과 같이 meta
를 붙이면 됩니다:
{UCLASS/UINTERFACE/USTRUCT/UFUNCTION/UPROPERTY}(meta=(MetaTag1="Value1", MetaTag2, ..))
클래스 메타데이터 지정자
클래스는 다음과 같은 메타태그 지정자를 사용할 수 있습니다:
| 클래스 메타 태그 | 효과 | | --- | --- | |BlueprintSpawnableComponent
| 존재하면, 블루프린트가 컴포넌트 클래스를 스폰시킬 수 있습니다. |
| BlueprintThreadSafe
| 블루프린트 함수 라이브러리에서만 유효합니다. 이 지정자는 이 클래스의 함수를 애니메이션 블루프린트의 비게임 스레드에서 호출가능한 것으로 마킹합니다. |
| ChildCannotTick
| 액터 및 컴포넌트 클래스에 사용됩니다. 네이티브 클래스가 틱을 할 수 없으면, 이 액터 또는 컴포넌트를 기반 블루프린트 생성 클래스도, 심지어 bCanBlueprintsTickByDefault
가 true 라도 절대 틱이 되지 않습니다. |
| ChildCanTick
| 액터 및 컴포넌트 클래스에 사용됩니다. 네이티브 클래스가 틱을 할 수 없으면, 이 액터 또는 컴포넌트를 기반 블루프린트 생성 클래스는, bCanBlueprintsTickByDefault
가 false 라 할지라도 bCanEverTick
옵션을 덮어쓰도록 할 수 있습니다. |
| DeprecatedNode
| 비헤이비어 트리 노드에 대해, 클래스가 폐기되어 컴파일 시 경고가 표시됨을 나타냅니다. |
| DeprecationMessage="Message Text"
| 클래스가 폐기되면, 그것을 사용하는 블루프린트를 컴파일하려 할 때 표준 폐기 경고에 이 메시지가 추가됩니다. |
| DisplayName="Blueprint Node Name"
| 블루프린트의 이 노드 이름은 코드 생성 이름이 아닌 여기 제공된 값으로 대체됩니다. |
| DontUseGenericSpawnObject
| 블루프린트의 Generic Create Object 노드를 사용하여 클래스의 오브젝트를 스폰하지 않습니다. 이 지정자는 Actor 도 ActorComponent 도 아닌 BlueprintType 클래스에만 의미가 있습니다. |
| ExposedAsyncProxy
| Async Task 노드에 이 클래스의 프록시 오브젝트를 노출시킵니다. |
| IgnoreCategoryKeywordsInSubclasses
| 클래스의 첫 서브클래스가 상속된 ShowCategories
및 HideCategories
지정자 전부를 무시하도록 만듭니다. |
| IsBlueprintBase="true/false"
| 이 클래스가 블루프린트 생성을 위한 베이스 클래스로 적합한지( 또는 아닌지)를 나타냅니다. UCLASS
지정자, Blueprintable
또는 'NotBlueprintable` 과 비슷합니다. |
KismetHideOverrides="Event1, Event2, .." |
덮어쓰기를 허용하지 않을 블루프린트 이벤트 목록입니다. |
ProhibitedInterfaces="Interface1, Interface2, .." |
클래스와 호환되지 않는 인터페이스 목록입니다. |
RestrictedToClasses="Class1, Class2, .." |
블루프린트 함수 라이브러리 클래스에서 목록의 클래스 사용을 제한시킵니다. |
ShortToolTip="Short tooltip" |
부모 클래스 선택기 대화창처럼 전체 툴팁 표시가 버거운 상황에서 사용할 짧은 툴팁입니다. |
ShowWorldContextPin |
이 클래스 소유 그래프에 배치된 블루프린트 노드는 월드 컨텍스트 핀을 반드시 표시해야 합니다. 이 클래스 오브젝트를 월드 컨텍스트로 사용할 수 없어서, 보통 숨겨진 경우에도 마찬가지입니다. |
UsesHierarchy |
클래스가 계층형 데이터를 사용함을 나타냅니다. 디테일 패널의 계층형 편집 기능 인스턴싱에 사용합니다. |
ToolTip="Hand-written tooltip" |
코드 코멘트에서 자동 생성되는 툴팁을 덮어씁니다. |
Enum Metadata Specifiers
Enumerations can use the following Metadata Specifiers:
Enumeration Meta Tag | Effect |
---|---|
Bitflags |
Indicates that this Enumeration can be used as flags by integer UPROPERTY variables that are set up with the "Bitmask" Metadata Specifier. |
Experimental |
Labels this type as experimental and unsupported. |
ScriptName="Display Name" |
The quoted string will be used as the name of this Enumeration in the Editor, rather than the default name generated by Unreal Header Tool. |
ToolTip="Hand-written tooltip" |
Overrides the automatically generated tooltip from code comments. |
Individual values within an Enumeration have their own Metadata Specifiers. These differ slightly from other Metadata Specifiers in that they use top-level keyword UMETA
, and are specified after the value they modify, rather than before.
Enumerated Value UMeta Tag | Effect |
---|---|
DisplayName="Enumerated Value Name" |
This value's name will be the text provided here, rather than the code-generated name. |
Hidden |
This value will not appear in the Editor. |
ToolTip="Hand-written tooltip." |
Overrides the automatically generated tooltip from code comments. |
인터페이스 메타데이터 지정자
인터페이스는 다음과 같은 메타태그 지정자를 사용할 수 있습니다:
인터페이스 메타 태그 | 효과 |
---|---|
CannotImplementInterfaceInBlueprint |
이 인터페이스는 블루프린트 에서 구현할 수 없습니다 (예를 들면 노출되지 않은 C++ 멤버 메서드만 있는 경우입니다). BlueprintImplementableEvent 또는 BlueprintNativeEvent 가 아닌 함수를 정의하는 인터페이스는, 반드시 CannotImplementInterfaceInBlueprint 로 선언해야 합니다. |
구조체 메타데이터 지정자
구조체는 다음과 같은 메타태그 지정자를 사용할 수 있습니다:
구조체 메타 태그 | 효과 |
---|---|
HasNativeBreak="Module.Class.Function" |
이 구조체에는 커스텀 Break Struct 노드가 있음을 나타냅니다. 모듈, 클래스, 함수 이름을 제공해야 합니다. |
HasNativeMake="Module.Class.Function" |
이 구조체에는 커스텀 Make Struct 노드가 있음을 나타냅니다. 모듈, 클래스, 함수 이름을 제공해야 합니다. |
HiddenByDefault |
Make Struct 및 Break Struct 노드의 핀을 기본으로 숨깁니다. |
ShortToolTip="Short tooltip" |
부모 클래스 선택기 대화창처럼 전체 툴팁 표시가 버거운 상황에서 사용할 짧은 툴팁입니다. |
ToolTip="Hand-written tooltip |
코드 코멘트에서 자동 생성되는 툴팁을 덮어씁니다. |
함수 메타데이터 지정자
함수 메타 태그 | 효과 |
---|---|
AdvancedDisplay="Parameter1, Parameter2, .." |
쉼표로 구분된 파라미터 목록이 (UI 확장이 필요한) 고급 핀으로 표시됩니다. |
AdvancedDisplay=N |
N 번째 이후 모든 파라미터는 (UI 확장이 필요한) 고급 핀으로 표시됩니다. 예로 'AdvancedDisplay=2' 는 첫째 둘째를 제외한 전부가 고급 파라미터가 됩니다. |
ArrayParm="Parameter1, Parameter2, .." |
BlueprintCallable 함수는 Call Array Function 노드를 사용하고, 나열된 파라미터는 와일드카드 배열 프로퍼티로 취급해야함을 나타냅니다. |
ArrayTypeDependentParams="Parameter" |
ArrayParm 사용 시, ArrayParm 목록 내 모든 파라미터 유형을 결정하는 파라미터를 지정합니다. |
AutoCreateRefTerm="Parameter1, Parameter2, .." |
나열된 파라미터는 참조 전달이라 할지라도, 핀을 연결하지 않고 놔둬도 자동 생성 기본값을 갖습니다. 블루프린트 편의 기능입니다. |
BlueprintAutocast |
블루프린트 함수 라이브러리의 스태틱 BlueprintPure 함수에서만 사용됩니다. 반환형과 함수 첫 파라미터 유형에 대한 형변환 노드가 자동 추가됩니다. |
BlueprintInternalUseOnly |
이 함수는 내부 구현 디테일로, 다른 함수 또는 노드 구현에 사용됩니다. 블루프린트 그래프에 바로 노출되지는 않습니다. |
BlueprintProtected |
이 함수는 블루프린트의 소유 오브젝트에서만 호출 가능합니다. 다른 인스턴스에서는 호출할 수 없습니다. |
CallableWithoutWorldContext |
WorldContext 핀이 있는 BlueprintCallable 함수에서, 클래스가 GetWorld 함수를 구현하지 않더라도 함수 호출이 가능함을 나타내는 데 사용됩니다. |
CommutativeAssociativeBinaryOperator |
BlueprintCallable 함수가 Commutative Associative Binary (이항 가환 결합) 노드를 사용해야 함을 나타냅니다. 이 노드는 핀 이름이 없지만, "Add Pin" (핀 추가) 버튼이 있어 입력 핀을 추가할 수 있습니다. |
CompactNodeTitle="Name" |
BlueprintCallable 함수가 간략 표시 모드로 표시해야 함을 나타내며, 그 모드에서 표시할 이름을 제공합니다. |
CustomStructureParam="Parameter1, Parameter2, .." |
나열된 파라미터는 모두 와일드카드로 취급됩니다. 이 지정자는 커스텀 |
DefaultToSelf |
BlueprintCallable 함수에 대해, 오브젝트 프로퍼티의 기본 값은 노드의 셀프 컨텍스트가 되어야 함을 나타냅니다. |
DeprecatedFunction |
이 함수를 참조하는 블루프린트는 컴파일 경고를 통해 사용자에게 함수가 폐기되었음을 알립니다. DeprecationMessage 메타데이터 지정자를 사용하면 (폐기된 함수 대체 안내문 제공과 같은) 폐기 경고 메시지를 추가할 수 있습니다. |
DeprecationMessage ="Message Text" |
함수가 폐기되면, 그것을 사용하는 블루프린트를 컴파일하려 할 때 표준 폐기 경고에 이 메시지가 추가됩니다. |
DevelopmentOnly |
이 함수는 개발 모드에서만 실행됩니다. 출시 제품에 포함시키지 않을 것으로 기대되는 디버그 출력같은 기능에 좋습니다. |
DisplayName="Blueprint Node Name" |
블루프린트의 이 노드 이름은 코드 생성 이름이 아닌 여기 제공된 값으로 대체됩니다. |
ExpandEnumAsExecs="Parameter" |
BlueprintCallable 함수에 대해, 파라미터에 사용되는 enum 각 항목에 대해 하나의 입력 실행 핀을 생성해야 함을 나타냅니다. 네임드 파라미터는 반드시 엔진에서 UENUM 태그로 인식되는 열거형이어야 합니다. |
HidePin="Parameter" |
BlueprintCallable 함수에 대해, 파라미터 핀을 사용자 뷰에서 숨겨야 함을 나타냅니다. 참고로 함수 당 단 하나의 파라미터만 이런 식으로 숨길 수 있습니다. |
HideSelfPin |
함수 호출 대상 오브젝트를 나타내는 데 사용되는 "self"(셀프) 핀을 숨깁니다. 셀프 핀은 호출하는 블루프린트 클래스와 호환되는 BlueprintPure 함수에서는 자동으로 숨겨집니다. 보통 DefaultToSelf 지정자와 함께 사용합니다. |
InternalUseParam="Parameter" |
HidePin 과 비슷하게, 사용자 관점에서 해당 이름의 파라미터 핀을 숨깁니다. 함수 당 하나의 파라미터에만 사용할 수 있습니다. |
KeyWords="Set Of Keywords" |
블루프린트 그래프에서 함수 호출을 위한 노드를 배치할 때처럼, 이 함수 검색 시 사용할 수 있는 키워드 세트를 지정합니다. |
Latent |
잠복성 동작을 나타냅니다. 잠복성 동작은 FLatentActionInfo 유형 파라미터가 하나 있으며, 이 파라미터 이름은 LatentInfo 지정자로 지정합니다. |
LatentInfo="Parameter" |
잠복성 BlueprintCallable 함수에 대해 어느 파라미터가 LatentInfo 파라미터인지 나타냅니다. |
MaterialParameterCollectionFunction |
BlueprintCallable 함수에 대해, 머티리얼 오버라이드 노드를 사용해야 함을 나타냅니다. |
NativeBreakFunc |
BlueprintCallable 함수에 대해, 표준 Break Struct 노드와 같은 식으로 함수를 표시해야 함을 나타냅니다. |
NotBlueprintThreadSafe |
블루프린트 함수 라이브러리에서만 유효합니다. 이 함수는 소유 클래스의 일반 BlueprintThreadSafe 메타데이터에 예외로 취급됩니다. |
ShortToolTip="Short tooltip" |
부모 클래스 선택기 대화창처럼 전체 툴팁 표시가 버거운 상황에서 사용할 짧은 툴팁입니다. |
ToolTip="Hand-written tooltip |
코드 코멘트에서 자동 생성되는 툴팁을 덮어씁니다. |
UnsafeDuringActorConstruction |
이 함수는 액터 생성 도중 호출하는 것이 안전하지 않습니다. |
WorldContext="Parameter" |
BlueprintCallable 함수에서 어느 파라미터가 연산이 일어나는 월드를 정하는지 나타냅니다. |
프로퍼티 메타데이터 지정자
프로퍼티 메타 태그 | 효과 |
---|---|
AllowAbstract="true/false" |
Subclass 및 SoftClass 프로퍼티에 사용됩니다. 클래스 선택기에 추상 클래스 유형 표시 여부를 나타냅니다. |
AllowedClasses="Class1, Class2, .." |
FSoftObjectPath 프로퍼티에 사용됩니다. 이 쉼표 구분 목록은 애셋 선택기에 표시할 애셋의 클래스 유형을 나타냅니다. |
AllowPreserveRatio |
FVector 프로퍼티에 사용됩니다. 디테일 패널에서 이 프로퍼티를 표시할 때 비율 고정이 추가되도록 합니다. |
ArrayClamp="ArrayProperty" |
인티저 프로퍼티에 사용됩니다. 0 에서 배열 프로퍼티 길이까지 UI 에 입력할 수 있는 유효 값을 범위제한시킵니다. |
AssetBundles |
SoftObjectPtr 또는 SoftObjectPath 프로퍼티에 사용됩니다. 프라이머리 데이터 애셋 안에서 번들 이름 목록을 사용하여 Primary Data Assets 안에서 번들 이름 목록을 사용하여 이 레퍼런스가 어느 번들의 일부인지를 지정합니다. |
BlueprintBaseOnly |
Subclass 및 SoftClass 프로퍼티에 사용됩니다. 클래스 선택기에 블루프린트 클래스만 표시할지를 나타냅니다. |
BlueprintCompilerGeneratedDefaults |
프로퍼티 디폴트는 블루프린트 컴파일러에 의해 생성되며, 컴파일 이후 CopyPropertiesForUnrelatedObjects 함수가 호출될 때 복사하지 않습니다. |
ClampMin="N" |
플로트 및 인티저 프로퍼티에 사용됩니다. 프로퍼티에 입력할 수 있는 최소값 N 을 지정합니다. |
ClampMax="N" |
플로트 및 인티저 프로퍼티에 사용됩니다. 프로퍼티에 입력할 수 있는 최대값 N 을 지정합니다. |
ConfigHierarchyEditable |
이 프로퍼티는 환경설정 (.ini ) 파일에 시리얼라이즈되며, 환경설정 계층구조 내 어디든 설정할 수 있습니다. |
ContentDir |
FDirectoryPath 프로퍼티에 사용됩니다. Content 폴더 내 슬레이트 스타일 디렉터리 선택기를 사용하여 경로를 선택할 것임을 나타냅니다. |
DisplayAfter="PropertyName" |
이 프로퍼티는 같은 카테고리에 있으면 소스 코드에서의 순서와 무관하게 PropertyName 프로퍼티 바로 다음 나타납니다. 다수의 프로퍼티에 DisplayAfter 및 DisplayPriority 값이 같으면, 헤더 파일에 선언된 순서대로 네임드 프로퍼티 다음에 나타납니다. |
DisplayName="Property Name" |
코드 생성 이름 대신 이 프로퍼티에 표시할 이름입니다. |
DisplayPriority="N" |
두 프로퍼티에 DisplayAfter 값이 같거나, 같은 카테고리에 있고 DisplayAfter 메타 태그가 없으면, 이 프로퍼티가 스 정렬 순서를 결정합니다. 가장 높은 우선순위는 1 이며, DisplayPriority 값이 1 인 프로퍼티는 DisplayProirity 값이 2 인 프로퍼티 위에 나타난다는 뜻입니다. 여러 프로퍼티에 DisplayAfter 값이 같으면, 헤더 파일에 선언된 순서대로 나타납니다. |
DisplayThumbnail="true" |
프로퍼티가 애셋 유형이며 선택된 애셋의 썸네일을 표시해야함을 나타냅니다. |
EditCondition="BooleanPropertyName" |
이 프로퍼티 편집 비활성화 여부를 나타내는 데 사용되는 부울 프로퍼티 이름입니다. 프로퍼티 이름 앞에 "!" 를 붙이면 테스트가 반대로 됩니다. |
EditFixedOrder |
배열 요소의 순서를 끌어 바꿀 수 없도록 합니다. |
ExactClass="true" |
FSoftObjectPath 프로퍼티에 AllowedClasses 와 함께 사용됩니다. AllowedClasses 에 지정된 딱 그 클래스만 사용할지, 아니면 서브클래스도 포함시킬지를 나타냅니다. |
ExposeFunctionCategories="Category1, Category2, .." |
블루프린트 에디터에서 함수 목록을 만들 때 들어있는 함수를 노출시킬 카테고리 목록을 지정합니다. |
ExposeOnSpawn="true" |
프로퍼티를 이 클래스 유형에 대한 Spawn Actor 노드에 노출시킬지 지정합니다. |
FilePathFilter="FileType" |
FFilePath 프로퍼티에 사용됩니다. 파일 선택기에 표시할 경로 필터를 나타냅니다. 흔히 "uasset" 이나 "umap" 이 포함되지만, 다른 것도 가능합니다. |
HideAlphaChannel |
FColor 및 FLinearColor 프로퍼티에 사용됩니다. 디테일에서 프로퍼티 위젯을 표시할 때 Alpha 프로퍼티를 숨길지를 나타냅니다. |
HideViewOptions |
Subclass 및 SoftClass 프로퍼티에 사용됩니다. 클래스 선택기의 뷰 옵션을 바꾸는 기능을 숨깁니다. |
InlineEditConditionToggle |
이 부울 프로퍼티는 다른 프로퍼티의 편집 조건 토글로써 인라인으로만 표시되며, 자체 행에는 표시되지 않음을 나타냅니다. |
LongPackageName |
FDirectoryPath 프로퍼티에 사용됩니다. 경로를 긴 패키지 이름으로 변환합니다. |
MakeEditWidget |
트랜스폼 또는 로테이터, 아니면 그 배열에 사용됩니다. 프로퍼티를 뷰포트에 이동가능 위젯으로 노출시켜야 함을 나타냅니다. |