본문 바로가기

프로그래밍

EPhysicalSurface를 FString으로 변환하는 방법

728x90
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
반응형