▣ 코드 분석
Hit.GetActor()->GetName()
충돌된 액터의 이름을 가져옵니다.
이름은 FString 형식으로 반환됩니다.
▣ GetName
설명:
UObject의 이름을 반환하는 함수입니다.
이름은 FString 형식으로 반환되며, 이는 해당 객체가 엔진 내에서 사용되는 고유 이름입니다.
사용 예시:
FString Name = Hit.GetActor()->GetName();
주요 활용:
디버깅 시 객체 이름 확인.
이름을 기반으로 객체 필터링 또는 분류.
▣ LeftChop
설명:
문자열의 끝에서 지정한 길이만큼 제거하여 새로운 문자열을 반환합니다.
사용 예시:
FString Result = ItemName.LeftChop(3); // 끝에서 3글자 제거
주요 활용:
특정 패턴의 끝 부분을 제거하여 필요한 부분만 추출.
문자열 길이를 줄이는 작업에 유용.
▣ Find
설명:
문자열 내에서 특정 서브 문자열의 첫 번째 위치를 반환합니다.
찾은 경우 해당 시작 위치(인덱스)를 반환하고, 찾지 못하면 INDEX_NONE(-1)을 반환합니다.
사용 예시:
int32 Index = ItemName.Find(TEXT("_C_"));
if (Index != INDEX_NONE)
{
FString Result = ItemName.Left(Index); // "_C_" 이전 문자열 추출
}
옵션:
ESearchCase::IgnoreCase(대소문자 무시) 또는 ESearchCase::CaseSensitive(대소문자 구분) 지정 가능.
ESearchDir::FromStart 또는 ESearchDir::FromEnd로 검색 방향 설정 가능.
예: ActorName_C_12
ItemName.LeftChop(ItemName.Len() - ItemName.Find(TEXT("_C_")))
▣ ItemName.Len()
문자열의 전체 길이를 반환합니다.
입력: "ActorName_C_12"
결과: 14 (총 14자).
▣ ItemName.Find(TEXT("_C_"))
_C_라는 서브 문자열의 시작 위치를 반환합니다.
입력: "ActorName_C_12"
_C_는 ActorName 뒤에서 시작하므로:
결과: 9 (A=0, c=1, t=2, o=3, r=4, N=5, a=6, m=7, e=8, _=9).
▣ ItemName.Len() - ItemName.Find(TEXT("_C_"))
_C_ 이후의 문자열 길이를 계산합니다.
계산: 14 - 9 = 5.
의미: 문자열의 끝에서 5자를 제거하면 _C_12가 잘립니다.
▣ ItemName.LeftChop(5)
문자열의 끝에서 5자를 제거합니다.
입력: "ActorName_C_12"
결과: "ActorName"
▣ for (TCHAR Char : ItemName)
동작:
ItemName 문자열을 한 글자씩 순회합니다.
▣ TCHAR는 한 글자를 담을 수 있는 변수 타입입니다.
▣ 관련 개념:
TCHAR:
설명: Unreal Engine에서 문자열의 문자를 나타내는 타입입니다.
정의: 기본적으로 char16_t로 구현되며, UTF-16 형식의 문자(16비트)를 다룹니다.
이유: Unreal Engine은 다국어 및 유니코드 문자열을 지원하기 위해 UTF-16을 기본 문자 형식으로 사용합니다.
TCHAR Letter = 'A'; // 한 글자 저장
▣ for-each 구문:
문자열(FString)은 TArray <TCHAR>처럼 동작하며, 문자 하나하나를 순회할 수 있습니다.
예:
FString ItemName = "ActorName";
for (TCHAR Char : ItemName)
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf(TEXT("Char: %c"), Char));
}
출력: Char: A, Char: c, Char: t ...
▣ if (!FChar::IsDigit(Char))
동작:
현재 문자가 숫자인지 확인합니다.
▣ FChar::IsDigit()은 숫자(0~9)인지 확인하고, 숫자가 아닐 경우(true)에 해당 문자만 처리합니다.
▣ FChar:
Unreal Engine에서 문자열 작업을 위한 유틸리티 클래스입니다.
숫자, 알파벳, 공백 등 문자의 특정 속성을 확인하거나 변환하는 데 사용됩니다.
관련 메서드:
IsDigit(TCHAR Char): 문자가 숫자인지 확인 (0~9).
IsAlpha(TCHAR Char): 문자가 알파벳인지 확인.
ToLower(TCHAR Char): 문자를 소문자로 변환.
ToUpper(TCHAR Char): 문자를 대문자로 변환.
예:
if (FChar::IsDigit('5')) // true 반환
{
// 숫자인 경우 실행
}
▣ ! 연산자:
논리 부정(NOT)을 나타냅니다.
FChar::IsDigit(Char)이 true이면 ! 연산자로 인해 false가 되고, 숫자가 아닌 문자만 조건을 만족합니다.
작동 방식:
예: ItemName = "Actor123"
A → IsDigit('A')는 false → 조건 만족.
1 → IsDigit('1')는 true → 조건 불만족.
결과: Actor만 처리.
▣ ProcessedItemName.AppendChar(Char)
동작:
ProcessedItemName에 현재 문자를 추가합니다.
▣ AppendChar(TCHAR Char):
FString 클래스에서 제공하는 함수로, 문자열 끝에 단일 문자를 추가합니다.
▣ 예:
FString Name = "ello";
Name.AppendChar('!');
A → 숫자가 아님 → ProcessedItemName.AppendChar('A').
c → 숫자가 아님 → ProcessedItemName.AppendChar('c').
...
1 → 숫자 → 처리하지 않음.
출력:
ProcessedItemName = "Actor"
_C_가 처음 나타나는 위치를 찾습니다.
_C_ 이후의 문자열을 잘라내고, _C_ 이전의 이름만 남깁니다.
LeftChop은 문자열의 끝에서 특정 길이만큼을 제거하는 함수입니다.
예: ActorName_C_12 → ActorName
for (TCHAR Char : ItemName)
ItemName의 각 문자를 순회합니다.
예: ActorName의 각 문자 A, c, t 등.
if (!FChar::IsDigit(Char))
현재 문자가 숫자가 아닌지 확인합니다.
숫자가 아닌 문자는 ProcessedItemName에 추가됩니다.
ProcessedItemName.AppendChar(Char)
숫자가 아닌 문자를 ProcessedItemName에 추가합니다.
최종적으로 숫자가 제거된 문자열만 ProcessedItemName에 남습니다.
예: Actor123Name → ActorName
ItemName = ProcessedItemName
숫자가 제거된 결과를 ItemName에 저장합니다.
▣ API
https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/Containers/FString/Find/
https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/Containers/FString/AppendChar/
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 Blueprint BGM 재생, 정지 (0) | 2025.01.24 |
---|---|
언리얼엔진5 c++ GetMapName UEDPIE_0_ 제거 (0) | 2025.01.23 |
언리얼엔진5 c++ CanvasPanel (0) | 2025.01.13 |
언리얼엔진5 Pain Causing Volume (함정, 불, 발판 데미지 볼륨) (0) | 2025.01.13 |
언리얼엔진5 Blueprint Camera Zoom (0) | 2025.01.11 |
댓글