본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 5 에서 C++ 의 int32는 UPROPERTY 를 사용할 수 있지만, int 는 사용할 수 없는데, 이유는 무엇인가요?

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

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

언리얼 엔진 5 에서 C++ 의 int32는 UPROPERTY 를 사용할 수 있지만, int 는 사용할 수 없는데, 이유는 무엇인지 간략히 알아보았습니다.


질문 >

언리얼 엔진 5 에서 C++ 의 int32는 UPROPERTY 를 사용할 수 있지만, int 는 사용할 수 없는데, 이유는 무엇인가요?

답변 >

언리얼 엔진 5에서 UPROPERTY 매크로는 언리얼 엔진의 리플렉션 시스템가비지 컬렉션 시스템을 지원하기 위해 특정한 데이터 타입에 한정하여 사용 가능합니다. int32는 UPROPERTY로 선언할 수 있지만, 기본 C++ int 타입은 지원되지 않습니다. 그 이유는 플랫폼 독립성데이터 크기 일관성을 보장하기 위해서입니다.

이유와 원리

  1. 플랫폼 간 크기 일관성:
    • C++에서 int는 크기가 플랫폼마다 다를 수 있으며 32비트 시스템과 64비트 시스템에서 다르게 정의될 수 있습니다. 이는 언리얼 엔진이 지원하는 다양한 플랫폼(PC, 콘솔, 모바일 등)에서 일관성을 보장하기 어렵게 만듭니다.
    • 반면, int32는 **언제나 32비트(4바이트)**로 정의된 고정 크기 타입입니다. 따라서, 언리얼 엔진은 int32와 같은 고정 크기 정수형을 사용함으로써 모든 플랫폼에서 데이터 크기의 일관성을 보장합니다.
  2. 리플렉션 시스템의 요구사항:
    • 언리얼 엔진의 리플렉션 시스템은 변수의 크기와 타입 정보를 명확히 알아야 블루프린트, 에디터 노출, 직렬화 등을 지원할 수 있습니다. 이 시스템은 UPROPERTY로 선언된 변수를 정확하게 관리해야 하며, 일관된 데이터 크기와 타입이 요구됩니다.
    • int32와 같은 고정 크기 정수형은 리플렉션 시스템에서 안전하게 사용될 수 있는 반면, 기본 C++ int는 크기와 범위가 불명확하기 때문에 리플렉션 시스템에서 안전하게 사용할 수 없습니다.
  3. 엔진의 API 표준화:
    • 언리얼 엔진은 int32, float, uint8 등 고정 크기 타입을 모든 API에서 표준 타입으로 사용하여 일관성을 유지합니다. 이러한 타입은 UPROPERTY와 같은 매크로를 사용할 때도 안정적으로 사용할 수 있도록 엔진 전반에 걸쳐 표준화되어 있습니다.
    • 따라서, 엔진의 모든 기능과 API에서 같은 타입의 데이터를 주고받기 위해 고정 크기 타입을 사용하며, 이를 통해 코드의 유지 보수와 확장성이 향상됩니다.

예시 코드

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Example")
int32 MyValue; // 지원되는 타입

// int MyValue; // 지원되지 않는 타입, 오류 발생

위의 코드에서 MyValue는 int32 타입으로 선언되어 UPROPERTY를 사용할 수 있습니다. int 타입을 사용하려고 하면 오류가 발생합니다.

결론

언리얼 엔진 5에서 UPROPERTY는 int32와 같은 고정 크기 타입을 요구하며, 이는 리플렉션 시스템의 안정성과 플랫폼 독립성을 보장하기 위함입니다. 이를 통해 언리얼 엔진은 다양한 플랫폼에서 일관된 데이터 처리가 가능하도록 설계되어 있습니다.


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


🎬 유튜브 채널 🎬

 

위로그@WiLog

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

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

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

chzzk.naver.com


반응형