๊ฒ์ ์ ์์ ํน์ฑ
๋ฐ์ดํฐ์ ์ ๋ณด๊ฐ ๋ช ํํด์ผ ํจ
๋จ์ผ ์ปดํจํฐ์์ ์ต๋ ํผํฌ๋จผ์ค๋ฅผ ๋ฝ์๋ด์ผ ํจ
๋คํธ์ํฌ ์์์ ๋ฐ์ดํฐ ํต์ ์ด ํจ์จ์ ์ด๊ณ ์์ ์ ์ด์ด์ผ ํจ
C++์์ int๋ ์ต์ 32๋นํธ๋ฅผ ๋ณด์ฅํ๋๋ก ๊ท์ฝ๋์ด ์์
ํน์ ํ๋ซํผ์์๋ 64๋นํธ๋ก ํด์๋ ์ ์์
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ int ํ์ ์ ํฌ๊ธฐ ํ์ ๋ถ๊ฐ
๐ ๋ฐ์ดํฐ ํ์ ์ ์ ๋งค๋ชจํธํจ์ ๊ฒ์ ๊ฐ๋ฐ์ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
ํ๋ฐ์ธ์ด C#์ ๊ฒฝ์ฐ, int ํ์ ์ด ์์ง๋ง, 4๋ฐ์ดํธ์ธ int32๋ก ๋ช ํํ ์ ์๋์ด ์์
์ธ๋ฆฌ์ผ์ int๋ฅผ ์ฌ์ฉํ์ง ์๊ณ int32 ์ฌ์ฉ
์ธ๋ฆฌ์ผ ์์ง์ ํ์ ๊ณผ ํฌ๊ธฐ
bool ํ์
- ํฌ๊ธฐ๊ฐ ๋ช ํํ์ง ์์
- bit filed ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ ํ์ํฌ ์ ์๋ค.
- bool ํ์ ์ ์ ์ฅํ ๋, ๋ฐ์ดํธ ํ์ ์ธ unit8๋ก ์ ์ธํ๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ 1๋ก ํ์ฌ ๋ฐ์ดํฐ์ ์์ ์ต์ํ ๊ฐ๋ฅ
- (์ ์ฅ ํ์ ) ์ผ๋ฐ unit8๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด b ์ ๋์ฌ ์ฌ์ฉ
- (cpp ๋ก์ง) ์์ ๋กญ๊ฒ bool ์ฌ์ฉ
unit8 bNetTemp:1;
char ํ์
- ํ์ฌ ์ปดํจํฐ์์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋ ์ข ๋ฅ๊ฐ ๋ค์ํ๋ค.
- ์ธ๋ฆฌ์ผ์์๋ TCHAR ๋ณ์ ํ๋๋ก ๋ค ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ธ๋ฆฌ์ผ์์๋ UTF-16 ํฌ๋งท์ ์ฌ์ฉ. ํ ๋ฌธ์๋น 2๋ฐ์ดํธ
- ํ ์คํธ์ ๊ด๋ จ๋ ๊ฒ๋ UTF-16 ์ฒด๊ณ๋ฅผ ์ฌ์ฉ
- ์์ค์ฝ๋์ ๊ฒฝ์ฐ์ ๋ง์ด ์ฌ์ฉํ๋ UTF-8์ ์ฌ์ฉํ์ฌ ์ ์ฅ
- ํ๊ธ์ ์ฌ์ฉํ ๋๋ UTF-8 ๋ฐฉ์์ผ๋ก ์ ์ฅ cf. ์ปดํ์ผ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์์ผ๋ ์ ์๊ณ ์์ผ๋ฉด ์ฌ์ฉ
์ ๋์ฝ๋๋ฅผ ์ํ ์ธ๋ฆฌ์ผ ํ์ค ์บ๋ฆญํฐ ํ์ : TCHAR
๋ฌธ์์ด์ ์ธ์ ๋ TEXT ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํด ์ง์ ํ๋ค.
TEXT๋งคํฌ๋ก๋ฅผ ๊ฐ์ผ ๋ฌธ์์ด์ TCHAR ๋ฐฐ์ด๋ก ์ง์ ๋จ
TCHAR LogCharArray[] = TEXT("Hello Unreal");
UE_LOG(LogTemp, Log, LogCharArray);
๋ฌธ์์ด์ ๋ค์ํ๊ฒ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, TCHAR ๋ฐฐ์ด์ด ์๋ ์ธ๋ฆฌ์ผ ์์ง์์ ์ ๊ณตํ๋ FString ํด๋์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
FString์ TCHAR ๋ฐฐ์ด์ ํฌํจํ๋ ํฌํผ ํด๋์ค
UE_LOG์ 3๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ํญ์ ๋ฐฐ์ด๋ง ๋ค์ด๊ฐ๋ค.
FString LogCharString = LogCharArray;
UE_LOG(LogTemp, Log, TEXT("%s"), *LogCharString); //FString์ด ๊ฐ์ธ๊ณ ์๋ ์ค์ ๋ฌธ์์ด ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
FString
FCString์ FString ๋ด๋ถ ํด๋์ค. FCString์์ FString ๋ฌธ์์ด์ ๋ณํ (์ค์ง์ ์ธ ์ผ์ ๋ด๋น)
FString์ ๋ฌธ์์ด ์ ์ฅ. ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ ๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์์ ํ์ง ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
์คํฌ๋ฆฝํธ์ ํ๊ธ์ด ์๋ ๊ฒฝ์ฐ, vs๋ฅผ ์ ๋์ฝ๋๋ก ๋ณ๊ฒฝํ์ฌ ์ ์ฅํ์ฌ์ผ ํ๋ค.
const TCHAR* LongCharPtr = *LogCharString; // const์ ํํ๋ก ์ฐธ์กฐ
TCHAR* LogCharDataPtr = LogCharString.GetCharArray().GetData(); // ์์ ํ ์ ์๋ ๋ฐ์ดํฐ
// ๋ฐฐ์ด๋ก ๋ณต์ฌ
TCHAR LogCharArrayWithSize[100];
FCString::Strcpy(LogCharArrayWithSize, LogCharString.Len(), *LogCharString);
// contains ๋์ด์๋์ง ๊ฒ์ฌ
if (LogCharString.Contains(TEXT("unreal"), ESearchCase::IgnoreCase)) { // ๋์๋ฌธ์ ๊ตฌ๋ถ์์ด
int32 Index = LogCharString.Find(TEXT("unreal"), ESearchCase::IgnoreCase);
FString EndString = LogCharString.Mid(Index);
UE_LOG(LogTemp, Log, TEXT("Find Test : %s"), *EndString);
}
// Split ์์
FString Left, Right;
if (LogCharString.Split(TEXT(" "), &Left, &Right)) {
UE_LOG(LogTemp, Log, TEXT("Split Test : %s ์ %s"), *Left, *Right);
}
int32 IntValue = 32;
float FloatValue = 3.141592;
FString FloatIntString = FString::Printf(TEXT("Int:%d Float:%f"), IntValue, FloatValue); // ์ถ๋ ฅ
FString FloatString = FString::SanitizeFloat(FloatValue); // float -> FString ํ๋ณํ
FString IntString = FString::FromInt(IntValue); // int -> FString ํ๋ณํ
UE_LOG(LogTemp, Log, TEXT("%s"), *FloatIntString);
UE_LOG(LogTemp, Log, TEXT("Int:%s Float:%s"), *IntString, *FloatString);
int32 IntValueFromString = FCString::Atoi(*IntString); // FString -> int
float FloatValueFromString = FCString::Atof(*FloatString); // FString -> float
FString FloatIntString2 = FString::Printf(TEXT("Int:%d Float:%f"), IntValueFromString, FloatValueFromString); // ์ถ๋ ฅ
UE_LOG(LogTemp, Log, TEXT("%s"), *FloatIntString2);
FString์ FName์ด๋ FText๋ก ๋ณํํด์ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ
FName
์์ ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋ฌธ์์ด ์ฒด๊ณ
๋์๋ฌธ์ ๊ตฌ๋ถ์๊ณ ์์ ๋ถ๊ฐ
๊ฐ๋ณ๊ณ ๋น ๋ฆ
๋ฌธ์๋ฅผ ํํํ๋ ์ฉ๋๊ฐ ์๋ ์์ ํค๋ฅผ ์ง์ ํ๋ ์ฉ๋๋ก ์ฌ์ฉ. ๋น๋์ ํด์๊ฐ์ผ๋ก ๋ณํ๋จ
FNamePool์ด๋ผ๊ณ ํ๋ ๊ณณ์ FName์ <key, value>๊ฐ ์ ์ฅ๋์ด ์์
๋ฌธ์์ด์ ๋ณํํ ํด์๊ฐ + key๊ฐ ์ ์ฅ๋จ
key๊ฐ์ ์ด์ฉํ์ฌ pool์ ์๋์ง ์ ๋ฌด ๊ฒ์
๋ฌธ์ ์ ๋ณด๋ ๋์๋ฌธ์ ๊ตฌ๋ถํ์ง ์๊ณ ์ ์ฅ (ignore case)
๊ฒฐ๊ตญ FName์๋ key๊ฐ๋ง ๋ค์ด์๊ธฐ ๋๋ฌธ์ ์ฉ๋์ ๋งค์ฐ ์๋ค. ๊ฒ์/์ถ๊ฐ
FName key1(TEXT("PELVIS"));
FName key2(TEXT("pelvis"));
UE_LOG(LogTemp, Log, TEXT("FName ๋น๊ต ๊ฒฐ๊ณผ : %s"), key1 == key2 ? TEXT("๊ฐ์") : TEXT("๋ค๋ฆ"));
for (int i = 0; i < 100; ++i) {
FName SearchInNamePool = FName(TEXT("pelvis")); // bad
const static FName StaticOnlyOnce(TEXT("pelvis")); // good
}
FName์ ๋ฌธ์์ด์ ๋์ ํ ๋, ๋ฌธ์์ด์ ํค ๊ฐ์ผ๋ก ๋ณํํ๊ณ ๊ฐ์ด ์๋์ง ๊ฒ์ํ๋ ๊ณผ์ ์ ๊ฑฐ ์น๊ธฐ ๋๋ฌธ์
๋น๋ฒํ ์ผ์ด๋์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ค๋ฒํค๋ ๋ฐ์ ๊ฐ๋ฅ
๐ ์ด๋ฅผ ์ํด ๋ฏธ๋ฆฌ ํ ๋ฒ๋ง ์ ์ธํด์ฃผ๊ฑฐ๋ const static์ผ๋ก ์ ์ธํ๋ค.
FText
๋ค๊ตญ์ด ์ง์์ ํ๋ ๋ฌธ์์ด ๊ด๋ฆฌ ์ฒด๊ณ
'โ๏ธ ์์ง > ๐ซ ์ธ๋ฆฌ์ผ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unreal] ์ธ๋ฆฌ์ผ ์ค๋ธ์ ํธ ๋ฆฌํ๋ ์ ์์คํ 2 (0) | 2024.03.31 |
---|---|
[Unreal] ์ธ๋ฆฌ์ผ ์ค๋ธ์ ํธ ๋ฆฌํ๋ ์ ์์คํ (ensure, check) (0) | 2024.03.31 |
[Unreal] ์ธ๋ฆฌ์ผ ์ค๋ธ์ ํธ (0) | 2024.03.29 |
[Unreal] ํฌ๋ก ์ธ๋ฆฌ์ผ | ๋ช ๋ช ๊ท์น (0) | 2024.03.28 |
[Unreal] ์ปดํ์ผ ๋ฐฉ๋ฒ (0) | 2024.03.28 |