TChar와 FString

2023. 5. 17. 20:49·[게임 개발] 언리얼엔진 공부/이득우의 언리얼 프로그래밍 Part.1

섹션 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의 형성

  1. 생성자에 문자열 정보를 전달하면, FName은 해당 문자열을 가지고 글로벌 Pool을 조사

  2. 글로벌 Pool에는 특정 값을 Key로 가지는 자료들이 저장되어 있음,
    그 중 입력된 문자열에 해당하는 적당한 키를 찾아냄

  3. 이렇게 변환된 키를 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
'[게임 개발] 언리얼엔진 공부/이득우의 언리얼 프로그래밍 Part.1' 카테고리의 다른 글
  • 언리얼 열거형, 컴포지션
  • 언리얼 인터페이스
  • 언리얼 오브젝트 리플렉션
  • 언리얼의 기본 타입을 따로 지정하는 이유
람팜팜~
람팜팜~
:)
  • 람팜팜~
    RumPumPum
    람팜팜~
  • 전체
    오늘
    어제
    • 전체 (124)
      • 🎵 일상 (2)
      • JAVA (5)
        • 김영한의 자바 입문 (3)
      • JavaScript (13)
      • ---------------------------.. (0)
      • [게임 개발] 포트폴리오 (2)
        • RPG (1)
        • 슈터-플랫포머 (1)
      • [게임 개발] 개발 일지 (28)
        • RPG (25)
        • TopDownProject (3)
      • [게임 개발] 언리얼엔진 공부 (9)
        • 이득우의 언리얼 프로그래밍 Part.1 (6)
        • 이득우의 언리얼 프로그래밍 Part.2 (1)
        • 개인 메모 (2)
      • [게임 개발] 알고리즘 공부 (60)
        • 프로그래머스 (8)
        • 백준 (52)
        • 개인 메모 (0)
      • [게임 개발] CPP 공부 (2)
        • 이것이 C++ 이다 (1)
        • Effective C++ (0)
        • Effective Modern C++ (0)
        • 홍정모 그래픽스 새싹코스 (1)
      • [게임 개발] CS 공부 (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      슬라이딩 윈도우
      투포인터
      누적합
      dp
      역참조
      참조자
      데드락
      우선순위 큐
      스레드
      브루트포스
      그리디
      프로세스
      context switching
      dfs
      메모리구조
      해시
      문자열
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    람팜팜~
    TChar와 FString
    상단으로

    티스토리툴바