TIL - Today I Learned : FString은 std::string 같다, const 를 사용하면 함수가 클래스를 수정할 수 없게 한다
오늘의 진도: Section 3: 장애물 공격 62. FString ~ 68. 마무리
FString
Fstring : Fname, FText와 달리 조작이 가능한 클래스로 다양한 매소드를 가지고 있음
C++의 std::string 과 비슷

Fstring을 log에 출력하려니 컴파일 오류가 난다.
Fstring의 변수 앞에 * 연산자를 넣어줘야하는데 그 이유는 UE_LOG의 세번자 인자는 printf의 형식으로 출력한다.
printf의 문자열을 나타내는 서식 지정자 %s를 사용하는데 %s의 경우 const char* 또는 char[]을 의미한다.
(C언어에는 string 이라는 개념이 없기에 문자열을 표현하기 위해 char의 배열을 사용함)
%s에 맞는 데이터형으로 전달하기 위해 FString에 *을 붙여 TCHAR*로 반환한다고 한다.

근데 왜 char* 가 아니라 TCHAR* 일까?
그건 문자가 ㅁ같아서 그렇다!
문자를 표현할때 ASCII character (char), 1 byte로 표현, 혹은
wide characters, Unicode, (wchar_t), 2 byte로 표현 등
다른 방식으로 표현할 수 있는데 플랫폼마다 다른 문자 데이터 타입을 사용하기 때문에
사용되는 플랫폼마다 데이터 형식을 바꿔줘야 하는데 이때 이를 간편하게 해주는 것이 TCHAR이다.
TCHAR는 유니코드가 정의된 경우 wchar 아니면 char가 되는 데이터 타입이다.
#ifdef UNICODE
typedef WCHAR TCHAR;
#else
typedef char TCHAR;
#endif
높은 이식성을 위해 UE5의 FString 클래스는 TChar의 TArray로 만들어져 있어서
printf의 %s 값을 넘겨주기 위해 Fstring의 *을 사용하여 TChar*를 전달 하는 것이다 .
언리얼 엔진의 FString
언리얼 엔진에서 FString 제작, 변환 및 비교를 위한 참고 자료입니다.
dev.epicgames.com
https://learn.microsoft.com/ko-kr/windows/win32/winprog/windows-data-types?redirectedfrom=MSDN
Windows 데이터 형식(BaseTsd.h) - Win32 apps
Windows에서 지원하는 데이터 형식은 함수 반환 값, 함수 및 메시지 매개 변수 및 구조체 멤버를 정의하는 데 사용됩니다.
learn.microsoft.com
Member Functions
복습
.h : headerFile - 정의하는 곳
.cpp : c++ File - 절차를 만다는 곳
class AMovingPlatform에 변수나 함수를 정의한다.

.h안에 있는 클래스에 정의한 변수, 함수를 사용하려면 (::) 연산자를 사용한다.
Scope Resolution Operator ::
인스턴스한 클래스의 변수, 함수를 참조하려면
Member Access Operator . 를 사용한다.

Return Statements
함수에 반환값이 필요하다면 반환되는 타입을 함수 앞에 정의해둔다.


Const Member Functions
함수의 const : 해당 함수가 클래스의 상태를 수정할 수 없게 만드는 것.
const 함수는 const 함수만 호출 할 수 있다.
const를 사용하여 코드의 안전성을 높일 수 있다.

UE이 제공하는 함수에도 const 함수들이 있다.


FRotator
AddActorLocalRotation은 AActor 클래스 안에 있는 멤버 함수 이다.


https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/GameFramework/AActor
AActor
Actor is the base class for an Object that can be placed or spawned in a level.
dev.epicgames.com
장애물을 더 추가하여 맵을 만들었다.
뭔가 재미있는게 생각나면 추가해서 만들어 보면 좋을 거 같다.

'Unreal Engine > Udemy:UE5 C++ 학습하고 게임 만들기' 카테고리의 다른 글
| Unreal Day - 21 - Light Types (0) | 2024.04.18 |
|---|---|
| Unreal Day - 20 - Section Intro - Crypt Raider (1) | 2024.04.17 |
| Unreal Day - 18 - Writing To The Output Log (1) | 2024.04.07 |
| Unreal Day - 17 - Blueprint Child Class (0) | 2024.04.06 |
| Unreal Day - 16 - Calling Functions in C++ (1) | 2024.04.01 |