묻공러
언리얼 문자열 - FName, FText
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (521) N
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • C# (20) N
      • [루키스] C# (9)
      • [루키스] 자료구조 (3)
      • [루키스] 실전 문법 (8) N
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 - 언리얼 (123)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
    • 게임 엔진 - 유니티 (14) N
      • [최적화] 유니티 (4)
      • [루키스] 유니티 (10) N
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
게임 엔진 - 언리얼/[코드조선] 언리얼

언리얼 문자열 - FName, FText

2024. 5. 10. 11:00

FName과 FText
FString은 FName과 FText로 변환해서 사용이 가능하다
  
FName
사람은 문자열로 애셋을 관리하는 게 직관적이다
그러나 문자열을 그대로 사용하면 연산량이 늘어나는 문제가 있다


따라서,

문자열로 관리를 하되, 내부적으로는 해시값으로 변환해서

에셋 관리를 위한 문자열 클래스가 FName 클래스이다

주의점은

대소문자 구분이 없고

한번 선언되면 int32와 같은 정수로 변환되는 단점이 있다
즉, 다시 원본 문자열로의 변경이 불가능하다

FText
다국어 지원을 위한 문자열 클래스로 UI에서 자주 사용한다

key와 value 쌍과 같이

FText는 key처럼 동작한다

"Hello - 안녕"과 같은 별도의 문자열 테이블 정보가 요구된다
게임 빌드 시에 자동으로 다양한 국가별 언어로 변환되고

로컬라이제이션에 활용된다


FName 구조와 활용
언리얼은 FName과 관련된 전역 Pool 자료구조를 가진다
문자열이 들어오면 해시 값을 만들고, 

해당 해시 값이 키 역할을 해서 FName에 저장한다
FName 값에 저장된 키를 사용해서 전역 Pool에서 원하는 자료를 검색해 보관된다

FName 생성과정
생성자에 문자열 정보를 넣으면,

전역 Pool을 조사해서 적당한 키로 변환하는 작업이 이루어진다
즉, FindOrAdd 작업이 진행된다

따라서, FName은 key와 value 쌍이고, 전역 Pool에는 기존의 FName들이 들어 있다

 

FName 주의점

FName은 컴파일 타임에 결정이 되고 초기화는 한 번만 되는 것이 일반적이기에

const static을 사용하는 것이 좋다

만약 사용하지 않으면, 함수 호출시 혹은 반복문과 같은 특정 상황에서

계속 전역 Pool에서 find를 하기 때문이다

FName SearchInNamePool = FName(TEXT("pelvis"));    
// 지역 변수로 선언되면, 
// 함수 호출시 혹은 반복문 순회마다 전역 Pool에서 해당 문자열이 있는지 확인

const static FName StaticOnlyOnce(TEXT("pelvis")); 
// 따라서 const static으로 FName을 만드는 것이
// 효율적이다
저작자표시 비영리 변경금지 (새창열림)

'게임 엔진 - 언리얼 > [코드조선] 언리얼' 카테고리의 다른 글

언리얼 기본 요소 - Component  (0) 2024.05.10
언리얼 자료구조 - TArray, TSet, TMap  (0) 2024.05.10
언리얼 문자열 - TCHAR, FString  (0) 2024.05.10
언리얼 오브젝트 기능 - 델리게이트  (1) 2024.05.10
언리얼 오브젝트 기능 - Serialization  (0) 2024.05.10
'게임 엔진 - 언리얼/[코드조선] 언리얼' 카테고리의 다른 글
  • 언리얼 기본 요소 - Component
  • 언리얼 자료구조 - TArray, TSet, TMap
  • 언리얼 문자열 - TCHAR, FString
  • 언리얼 오브젝트 기능 - 델리게이트
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.