On this page
article
Import
언리얼의 데이터 직렬화(Import/Export)
언리얼 엔진에서는 USTRUCT
나 UCLASS
타입을 문자열 형태로 저장하거나, 반대로 복원할 수 있는 기능을 제공한다. 대표적인 예로 FVector
의 ToString()
함수가 있다.
FVector MyVec = FVector(1, 2, 3);
FString Exported = MyVec.ToString(); // "(X=1,Y=2,Z=3)"
이처럼 구조체 데이터를 문자열로 저장할 수 있으며, 문자열에서 다시 파싱하여 원래 값으로 복원하는 기능이 Import이다. 이 기능의 핵심 함수가 ImportTextItem()
이다.
ImportTextItem()의 개요
ImportTextItem()
함수는 문자열을 구조체나 오브젝트의 필드로 변환하는 함수로, 다음과 같은 시그니처를 가진다:
bool ImportTextItem(
const TCHAR*& Buffer,
int32 PortFlags,
UObject* Parent,
FOutputDevice* ErrorText
);
- Buffer: 문자열의 시작 위치 (파싱이 진행됨에 따라 내부에서 이동됨)
- PortFlags: 포맷 옵션 (거의 무시 가능)
- Parent: 관련 부모 오브젝트 (대개 사용되지 않음)
- ErrorText: 오류 메시지 출력 장치
ImportTextItem()의 활용 예
사용 시점 | 설명 |
---|---|
DataTable CSV 임포트 | CSV의 셀에 문자열 형태로 저장된 구조체 필드를 실제 구조체로 파싱 |
블루프린트 디폴트 값 | (X=1,Y=2) 같은 문자열을 구조체 값으로 설정할 때 |
디테일 패널/Ini 설정 | .ini 파일 혹은 에디터에서 문자열 기반 속성 설정 |
호출 흐름 예시
DataTable CSV
CSV가 다음과 같을 때:
RowName,StatType
Row_1,Stat_MaxHp
Row_2,(StatType=Stat_MaxAttack)
StatType
이 구조체일 경우, 각 셀의 문자열은 ImportTextItem()
을 통해 파싱되어 구조체 필드로 설정된다.
디폴트 프로퍼티 설정
MyStruct = (StatType=Stat_Accuracy)
디테일 패널이나 .ini
에 이런 식으로 값을 넣으면 ImportTextItem()
이 호출되어 내부적으로 필드에 파싱 결과가 들어간다.
사용자 정의 구조체의 경우
FVector
, FColor
등 엔진 내장 구조체는 ImportTextItem()
이 이미 구현되어 있다. 하지만 사용자가 만든 구조체는 직접 구현해야 한다.
USTRUCT(BlueprintType)
struct FM1StatType
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 StatType;
bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText);
};
ImportTextItem()
을 구현하지 않으면, 언리얼은 문자열을 구조체로 해석할 방법을 모르므로 오류가 발생한다. 따라서 CSV에서 "Stat_MaxHp"
혹은 "(StatType=Stat_MaxHp)"
형식의 문자열을 제대로 파싱하려면 적절한 파서 구현이 필수이다.
핵심 요약
항목 | 설명 |
---|---|
ImportTextItem() | 문자열에서 구조체 데이터를 파싱하는 함수 |
호출 시점 | DataTable CSV 임포트, 블루프린트 디폴트 값, .ini 파일 등 |
필요한 이유 | 사용자 정의 구조체는 언리얼이 문자열을 해석할 방법이 없음 |
필수 조건 | UScriptStruct 등록 시 bWithImportText = true 설정 필요 |
필요하다면 반대 방향인 구조체 → 문자열 변환 함수인 ExportTextItem()
도 함께 정리 가능하다.