본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 5 에서 C++ 의 string 은 FString 을 사용할 것을 권장하는데, 이유가 무엇인가요?

by 밝음의기둥 2024. 11. 4.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 5 에서 C++ 의 string 은 FString 을 사용할 것을 권장하는데, 이유가 무엇이 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진 5 에서 C++ 의 string 은 FString 을 사용할 것을 권장하는데, 이유가 무엇인가요?

답변 >

언리얼 엔진 5에서는 C++의 표준 std::string 대신 **FString**을 사용하는 것이 권장됩니다. 이는 언리얼 엔진의 다양한 시스템과의 호환성 및 최적화, 메모리 관리 등의 이유에서 비롯된 것입니다. **FString**은 언리얼 엔진에서 문자열 데이터를 다루기 위한 기본 문자열 클래스이며, 엔진의 리플렉션 시스템, 로컬라이제이션, 메모리 관리와 긴밀하게 통합되어 있습니다.

FString을 사용하는 이유

  1. 언리얼 엔진의 리플렉션 시스템과의 통합:
    • 언리얼 엔진의 리플렉션 시스템은 주로 **FString*을 기반으로 하여 문자열 데이터를 관리합니다. 따라서, **FString*을 사용하면 UPROPERTY 등을 통해 블루프린트, 에디터 등에서 문자열을 안전하게 사용하고, 엔진의 다양한 기능과 상호작용할 수 있습니다.
    • std::string은 언리얼 엔진의 리플렉션 시스템에서 지원되지 않기 때문에, 엔진 기능과의 호환성을 유지하기 위해 FString을 사용하는 것이 좋습니다.
  2. 로컬라이제이션(Localization):
    • 언리얼 엔진은 전역적으로 게임을 번역하거나 다국어 지원을 할 때 FString을 사용합니다. FText와의 상호 변환을 통해 FString은 다국어 문자열과 로컬라이제이션 시스템과 연동이 용이합니다.
    • std::string은 유니코드와의 호환성이나 로컬라이제이션 기능이 부족하여 국제화가 필요한 프로젝트에서는 FString을 사용하는 것이 적합합니다.
  3. 메모리 관리와 성능 최적화:
    • FString은 언리얼 엔진의 메모리 관리 시스템과 최적화된 형태로 설계되어 있습니다. 엔진의 메모리 풀을 활용하며, 엔진 내부에서 관리되는 객체와의 데이터 전송이 효율적입니다.
    • 언리얼 엔진의 문자열 연산에 특화된 기능들(예: 문자열 연결, 서브스트링 검색 등)은 FString에 최적화되어 있어, 문자열 조작이 빈번한 경우 std::string보다 성능이 더 우수할 수 있습니다.
  4. 가비지 컬렉션 시스템과의 호환성:
    • FString은 언리얼 엔진의 가비지 컬렉션과 호환되도록 설계되어 있어, 메모리 관리를 엔진이 자동으로 수행할 수 있습니다. 반면, std::string은 엔진의 가비지 컬렉션에 의해 관리되지 않기 때문에 직접 메모리 해제를 관리해야 할 수 있습니다.
  5. 블루프린트 및 에디터와의 통합:
    • FString은 UPROPERTY와 함께 사용하여 블루프린트에서 직접 사용할 수 있습니다. 이를 통해 문자열 데이터를 블루프린트와 C++ 간에 쉽게 주고받을 수 있습니다.
    • 또한, 언리얼 엔진의 에디터에서 FString을 바로 편집할 수 있어 개발자가 문자열 값을 직접 입력하거나 수정하기 용이합니다.

사용 예시

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Example")
FString MyString; // 언리얼 엔진의 FString 사용

// std::string MyString; // 권장되지 않음

이 예제에서 FString을 사용하여 UPROPERTY를 통해 블루프린트와 상호작용이 가능하도록 합니다.

결론

언리얼 엔진 5에서 FString은 엔진과의 호환성, 로컬라이제이션 지원, 성능 및 메모리 관리 최적화와 같은 이유로 std::string보다 선호됩니다. 이를 통해 언리얼 엔진 내에서의 문자열 조작을 효율적으로 처리하고, 다양한 시스템과의 통합을 용이하게 할 수 있습니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형