본문 바로가기

프로그래밍

EPhysicalSurface를 FString으로 변환하는 방법

728x90

 

제공된 코드는 언리얼 엔진 5(UE5)에서 EPhysicalSurface라는 enum 타입의 값을 문자열(FString)로 변환하는 기능을 수행합니다. 이는 게임 오브젝트의 물리적 특성을 나타내는 enum 값을 사람이 읽을 수 있는 문자열로 바꾸어 디버깅이나 로그 출력 등에 활용될 수 있습니다.

C++

 

#include "Engine/EngineTypes.h"

FString ConvertEPhysicalSurfaceToString(EPhysicalSurface Surface)
{
    const UEnum* SurfaceEnum = StaticEnum<EPhysicalSurface>();
    return SurfaceEnum->GetNameByValue(static_cast<int64>(Surface));
}
 

 

동작:

  1. 필요한 헤더 포함: Engine/EngineTypes.h 헤더를 포함하여 EPhysicalSurface enum을 사용할 수 있도록 합니다.
  2. 변환 함수 정의: ConvertEPhysicalSurfaceToString 함수를 정의합니다. 이 함수는 EPhysicalSurface 타입의 값을 입력받아 FString 타입의 문자열을 반환합니다.
  3. enum 클래스 가져오기: StaticEnum<EPhysicalSurface>() 함수를 사용하여 EPhysicalSurface enum에 해당하는 UEnum 클래스를 가져옵니다. UEnum 클래스는 enum에 대한 메타데이터를 제공합니다.
  4. 문자열로 변환: GetNameByValue 함수를 사용하여 EPhysicalSurface 값을 문자열로 변환합니다. static_cast<int64>(Surface) 부분은 EPhysicalSurface 값을 int64 정수형으로 변환하여 GetNameByValue 함수에 전달합니다. 이 함수는 해당 정수 값에 해당하는 enum 값의 이름을 문자열로 반환합니다.

예시:

C++
EPhysicalSurface MySurface = EPhysicalSurface::SurfaceType1;
FString SurfaceName = ConvertEPhysicalSurfaceToString(MySurface);
 
 

위 예시 코드는 MySurface 변수에 SurfaceType1 값을 할당하고, ConvertEPhysicalSurfaceToString 함수를 호출하여 SurfaceName 변수에 "SurfaceType1"이라는 문자열을 저장합니다.

 

핵심 기능:

  • enum 값을 문자열로 변환: 게임 오브젝트의 물리적 특성을 사람이 이해하기 쉬운 문자열로 표현
  • 유연성: 다양한 EPhysicalSurface 값에 대해 동일한 방식으로 문자열 변환 가능
  • 디버깅 및 로그 출력: 변환된 문자열을 활용하여 디버깅 정보를 출력하거나 로그를 남길 수 있음

활용 예시:

  • 오브젝트 정보 출력: 특정 오브젝트의 물리적 특성을 로그에 출력하여 확인
  • 커스텀 에디터: 에디터 창에서 EPhysicalSurface 값을 선택할 때 해당 값에 대한 설명을 표시
  • 데이터 저장: 게임 데이터를 저장할 때 EPhysicalSurface 값을 문자열 형태로 저장

추가 설명:

  • UEnum 클래스는 UE4/UE5에서 enum에 대한 메타데이터를 제공하는 클래스입니다. enum 값의 이름, 설명, 플래그 등을 얻어올 수 있습니다.
  • GetNameByValue 함수는 UEnum 클래스의 멤버 함수로, 주어진 정수 값에 해당하는 enum 값의 이름을 문자열로 반환합니다.

요약:

이 코드는 UE5에서 EPhysicalSurface enum 값을 문자열로 변환하는 간단하고 효율적인 방법을 제공합니다. 게임 개발 과정에서 다양한 상황에서 활용될 수 있는 유용한 기능입니다.

728x90