FName은 주로 Unreal에서 사용되는 데이터 타입으로, 효율적인 문자열 관리를 위해 설계된 클래스이다.FName은 Unreal Engine의 핵심 클래스 중 하나로, 문자열을 효율적으로 저장하고 비교할 수 있도록 설계된 데이터 타입이다. 일반적인 FString 과의 차이점은 다음과 같다.
FName 값은 변경할 수 없음FString은 문자열을 동적으로 수정할 수 있지만, FName은 고정된 값을 가지며 변경되지 않음FName은 문자열 비교를 빠르게 수행할 수 있도록 내부적으로 해시 값과 인덱스를 사용함.FString을 비교할 때는 전체 문자열을 비교해야 하지만, FName은 미리 생성된 인덱스를 비교하여 빠르게 처리 가능FName은 전역 테이블에서 관리됨.FName은 주로 int32 인덱스를 기반으로 하여 문자열을 저장함.FString 보다 메모리 사용량이 적으며, 네트워크 전송 시에도 부담이 적음FName 기본 생성 및 반환FName MyName = FName("Player1");
return MyName;
"Player1" 이라는 이름을 갖는 FName 객체가 생성되고 반환됨.FName을 이용한 연산FName Name1 = FName("Enemy");
FName Name2 = FName("Enemy");
FName Name3 = FName("Player");
if (Name1 == Name2)
{
UE_LOG(LogTemp, Warning, TEXT("같은 FName입니다!"));
}
if (Name1 != Name3)
{
UE_LOG(LogTemp, Warning, TEXT("다른 FName입니다!"));
}
Name1과 Name2는 같은 문자열을 저장하고 있으므로 == 비교가 진실(true)가 됨.Name1과 Name3는 서로 다른 문자열을 저장하고 있으므로 != 비교가 진실(true)가 됨.FName을 FString으로 변환FName MyFName = FName("TestName");
FStirng MyString = MyFName.ToString();
UE_LOG(LogTemp, Waring, TEXT("FName을 FString으로 변환: %s"), *MyString);
FName.ToString() 을 사용하면 FSting` 으로 변환 가능FName을 TEXT() 매크로와 함께 사용FName LevelName = TEXT("MainLevel");
UE_LOG(LogTemp, Warning, TEXT("현재 레벨 이름: %s"), *LevelName.ToString());
TEXT() 매크로를 사용하여 FName을 직접 생성할 수도 있음.
FName은 Unreal Engine에서 문자열을 효율적으로 관리하기 위한 데이터 타입이다.return FName();은 새로운 FName 객체를 반환하는 코드FName은 빠른 비교 성능, 불변성, 메모리 절약 등의 장점을 가짐FString을 사용해야 함즉, FName은 고정된 문자열을 자주 비교해야 할 때 가장 적합한 타입이다.