섹션 1.언리얼C++ 기본타입과 문자열 中
문자열
언리얼은 UTF-16 (한 문자당 2바이트) 포맷을 사용하지만
소스코드에서 한글을 사용 하고자 한다면 UTF-8 (1바이트에서 최대 4바이트 가변길이) 포맷을 사용.
TChar 와 FString
- TChar 배열을 FString에 넣으면 TArray 방식으로 문자열이 보관
동적 배열에서 데이터를 꺼내 쓸 때에는 동적배열의 내부 자료에 대한 포인터를 가져와서
넘겨줘야 한다(dereferencing)
TCHAR CharArray[] = TEXT("Hello Unreal");
FString CharString = CharArray;
UE_LOG(LogTemp, Log, TEXT("%s"), *CharString);
또한, Find 와 Split 과 같이 문자열을 찾거나 자르는 기능들은 내부적으로 FCString이 포함하고 있다.
즉 FString은 문자열 보관의 기능을 하고
문자열의 처리들은 FCString 을 통하여 진행된다.
FName 과 글로벌 Pool
FName 이란?
- 에셋을 관리하기 위해 사용되는 문자열 체계
- 문자 표현 용도가 아닌 에셋키 지정용도, 빌드시 해시값으로 변환 됨
- 문자 정보는 대소문자를 구분하지 않고 저장 (Ignore Case)
- 가볍고 빠름
글로벌 Pool 이란?
- 전역범위에서 사용되는 자원, 데이터를 관리하기 위한 방식
- 프로그램 전체에서 접근 가능한 공유 자원을 관리하는 개념
두 값 사이의 특징
- 문자열이 들어오면 해시값을 추출해, 키를 생성하여 FName에서 보관한다.
- FName 변수에 저장된 값으로 부터 원하는 자료를 글로벌 Pool에서 검색 후 반환
FName의 형성
- 생성자에 문자열 정보를 전달하면, FName은 해당 문자열을 가지고 글로벌 Pool을 조사
- 글로벌 Pool에는 특정 값을 Key로 가지는 자료들이 저장되어 있음,
그 중 입력된 문자열에 해당하는 적당한 키를 찾아냄 - 이렇게 변환된 키를 FName이 내부적으로 가지게 됨.
// FName을 사용하여 캐릭터 모델의 이름을 지정합니다.
FName CharacterModelName = FName(TEXT("Character1"));
// 글로벌 Pool에서 해당 FName으로 캐릭터 모델을 검색하고 반환합니다.
CharacterModel* Model = GlobalCharacterModelPool::FindCharacterModel(CharacterModelName);
// 반환된 캐릭터 모델을 사용합니다.
if (Model != nullptr)
{
// 캐릭터 모델을 렌더링하거나 다른 작업을 수행합니다.
Model->Render();
}
요약하자면, FName은 문자열을 해시값으로 변환하여 글로벌 Pool에서 관리되는 키로 사용되는 데이터 타입.
이를 통해 에셋을 효율적으로 관리하고 검색
'[게임 개발] 언리얼엔진 공부 > 이득우의 언리얼 프로그래밍 Part.1' 카테고리의 다른 글
델리게이트 (0) | 2023.09.03 |
---|---|
언리얼 열거형, 컴포지션 (0) | 2023.05.24 |
언리얼 인터페이스 (0) | 2023.05.23 |
언리얼 오브젝트 리플렉션 (0) | 2023.05.19 |
언리얼의 기본 타입을 따로 지정하는 이유 (0) | 2023.05.17 |