오늘의 코드카타
- 모음 사전
- 뒤에 있는 큰 수 찾기
- 롤케이크 자르기
오늘의 공부
팀 프로젝트 진행 내용
- 발표 자료 제작
- 개요 작성
- 기술적 세부사항 : Door & NavMesh
- 트러블 슈팅 : Seamless Travel
오늘의 CS
언리얼의 3가지 String
1. FString
- C++의
std::string과 유사한 가장 일반적인 문자열 타입
- 특징
- 내부적으로
TArray<TCHAR> 기반으로 동적 크기 배열로 구현되어 있음
- 가변성 : 문자열을 수정, 연결, 파싱, 변환 등 자유롭게 변경 가능
- 느린 속도 : 가변성과 내부적인 메모리 재할당 때문에 가장 느림
- 예시 : 로깅 메시지, 디버그 정보, 가장 일반적으로 사용
2. FName
- 문자열을 고유한 식별자로 사용할 수 있는 해시 기반 불변 문자열 타입
- 특징
- 문자열이 저장된 전역 Name Table(해시 테이블) 에 저장되고, 인덱스(ID)로 관리됨
- 불변성 : 한 번 생성된
FName은 수정 불가
- 빠른 비교 : 문자열 자체를 비교하지 않고, ID(정수) 비교로 처리하기 때문에 매우 빠름
- 예시 : Tag, Socket 이름, Property 이름, Blueprint 이름 등에 사용됨
3. FText
- 지역화(Localization)를 목적으로 설계된 불변 문자열 타입
- 특징
- UI, 대사, 메시지처럼 언어별 번역이 필요한 모든 곳에서 사용됨
- 지역화 지원 : 언리얼 엔진의 지역화 시스템과 통합되어, 런타임에 사용자 언어에 맞춰 번역된 문자열을 자동으로 표시함
- 불변성 :
FName과 동일하게 한 번 생성되면 변경 불가. 동적으로 조작하려면 FString으로 변환이 필요함
- 성능 : 텍스트 비교나 조작 용도로는 제일 느림, 메모리 사용도 많음
- 예시 : 위젯의 텍스트, HUD 표시 메시지 등에 사용됨
- 내부 구조 및 동작 방식
- 핵심 식별자 3가지를 저장하게 됨
- Source String : 원본 문자열
- Namespace : 텍스트가 사용되는 영역을 구분하는 식별자 (UI, Gameplay 등)
- Key : 특정 텍스트를 고유하게 식별하는 ID
- 빌드 과정에서 Localization Tool이 모든 FText 객체로부터 식별자 3가지를 추출함
- 추출된 정보를 번역 파일에 저장함
- 번역가가 별도로 추출된 내용을 기반으로 파일을 생성해야 함
- 게임을 실행하면, 엔진은 현재 설정된 언어에 해당하는 번역된 텍스트 데이터를 메모리에 로드하고, 화면에 표시될 때 Namespace와 Key를 사용하여 해당 언어에 맞는 문자열을 반환하게 됨