[UE4] 열거형의 값으로부터 표시명을 취득하는 노드의 거동이 에디터와 패키지로 다를 수 있다
소개
열거형의 값으로부터 표시명을 취득하는 노드란?
이것입니다.
예를 들어, 다음과 같은 열거형 정의가 있다고 가정합니다.
c++UENUM(BlueprintType)
enum class EEnumToStringElements : uint8
{
Element_0 UMETA(DisplayName = "要素1"),
Element_1 UMETA(DisplayName = "要素2"),
};
이 경우 '요소 1'과 '요소 2'가 표시 이름입니다.
만약 아래와 같이 메타데이터로 "DisplayName"을 지정하지 않은 경우…
c++UENUM(BlueprintType)
enum class EEnumToStringElements2 : uint8
{
Element_0,
Element_1,
};
이 경우 "Element 1"과 "Element 2"가 표시 이름입니다.
( "언더 바"가 "반각 공간"으로 대체되기 때문에.)
덧붙여서, 이것을 PrintString 로 표시하면(자) 이와 같이 됩니다.
이것을 패키지로 보면 ...?
언뜻 보면 아무런 문제가없는 것처럼 보이지만 패키지로 보면 어떨까요?
실은 이렇게 됩니다.
보시다시피, 둘 다 기호 이름이되었습니다.
그래서, 반드시 표시명이 돌려주어진다고 생각해 처리를 짜고 있으면, 패키지화했을 때에 아픈 눈을 보게 되므로, 주의할 필요가 있습니다.
BP로 열거형을 정의해 보면…?
다만, 이것은 열거형이 C++ 로 정의되고 있는 경우입니다. BP 로 정의된 열거형의 경우는 또한 거동이 다릅니다.
시험에 다음과 같은 열거형을 BP로 만들어 보았습니다.
이것을 PrintString 로 표시해 보아 어떻게 되었는가라고 하면, 이렇게 되었습니다.
이 대로, 이쪽의 경우는 패키지에서도 문제 없게 표시명을 취득할 수 있었습니다.
이 노드를 사용하고 싶을 때는 ...?
다음과 같은 상황이 가정됩니다.
UENUM(BlueprintType)
enum class EEnumToStringElements : uint8
{
Element_0 UMETA(DisplayName = "要素1"),
Element_1 UMETA(DisplayName = "要素2"),
};
UENUM(BlueprintType)
enum class EEnumToStringElements2 : uint8
{
Element_0,
Element_1,
};
언뜻 보면 아무런 문제가없는 것처럼 보이지만 패키지로 보면 어떨까요?
실은 이렇게 됩니다.
보시다시피, 둘 다 기호 이름이되었습니다.
그래서, 반드시 표시명이 돌려주어진다고 생각해 처리를 짜고 있으면, 패키지화했을 때에 아픈 눈을 보게 되므로, 주의할 필요가 있습니다.
BP로 열거형을 정의해 보면…?
다만, 이것은 열거형이 C++ 로 정의되고 있는 경우입니다. BP 로 정의된 열거형의 경우는 또한 거동이 다릅니다.
시험에 다음과 같은 열거형을 BP로 만들어 보았습니다.
이것을 PrintString 로 표시해 보아 어떻게 되었는가라고 하면, 이렇게 되었습니다.
이 대로, 이쪽의 경우는 패키지에서도 문제 없게 표시명을 취득할 수 있었습니다.
이 노드를 사용하고 싶을 때는 ...?
다음과 같은 상황이 가정됩니다.
다음과 같은 상황이 가정됩니다.
전자에 대해서는, DisplayName 미사용으로, 한편, 심볼명만 알면 좋은 경우이면, 이 노드를 사용해 표시명을 취득해도 그다지 문제가 없는 것 같습니다.
반대로 DisplayName 를 사용하고 있거나 , 또는 DisplayName 로 지정한 다른 캐릭터 라인을 사용하고 싶은 경우는 DisplyaName 의 캐릭터 라인을 사용하지 않고, 별도 준비한 캐릭터 라인을 사용하는 구조를 준비하는 편이 무난하게 생각됩니다.
후자에 관해서는, UEnum::GetNameStringByValue 를 사용한 함수나 이것을 이용한 K2_Node 를 준비하는 것으로 대응할 수 있을 것입니다만, 무거운 이야기가 될 것 같기 때문에 별도 검증이 필요할 것 같습니다.
Reference
이 문제에 관하여([UE4] 열거형의 값으로부터 표시명을 취득하는 노드의 거동이 에디터와 패키지로 다를 수 있다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/go_astrayer/items/40754833ceec6ad8b462텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)