문자열 타입 FString 를 사용하여 로그에 출력
위와 같이 작성하고 실행이 제대로 되면 좋겠지만, 컴파일 에러가 발생함.
그 이유는, UE_LOG 함수는 인자로 FString 타입을 사용할 수 없음.
따라서 *MyString 으로 써줌으로써 FString 타입을 TCHAR* 타입으로 변환하고 UE_LOG 매크로의 인자로 전달함.
FString MyString = "My String value";
라는 문장에서 "My String Value" 값은 엄밀히 말하면 TCHAR 타입의 문자열임.
그리고 TCHAR 타입은 UE_LOG 매크로의 인자로 사용 가능하므로 FString 타입을 TCHAR 타입으로 변환해줘야 함.
따라서 역참조 *MyString 을 사용해 CHAR* MyString = "My String Value";
로 변환시켜주고 TCHAR 타입의 배열인 "My String Value"를 매크로의 인자로 전달.
그러나 위의 코드는 유용한 편은 아님.
MyString 변수에 값을 이미 정해진 값을 할당한 것이므로 그냥 TEXT 함수 안에 전부 다 작성할 수 있음.
그렇다면 변수는 왜 사용하는 것일까?
그 이유는 정해진 값이 아닌, 동적인 값을 할당할 수 있기 때문.
GetName 함수는 움직이는 플랫폼 액터의 이름을 리턴함.
게임플레이 후 로그를 보면 이처럼 지금 레벨에 배치한 플랫폼 5개 액터의 이름이 출력되는 것을 확인할 수 있음.
해당 내용을 이용하여 오버슈팅된 액터의 이름을 출력하고 해당 액터가 얼마나 오버슈팅했는지 거리를 출력함.
그러나 위처럼 작성하고 실행시, OutPut Log에서 한글이 깨지는 것을 확인할 수 있음.
이는 cpp 파일의 인코딩 방식 때문임.
cpp 파일에선 한글 텍스트일지라도, 실행파일인 바이너리 파일로 변환하면 결국 전부 0과 1로 구성된 숫자임.
따라서 한글과 같은 문자열을 이진 숫자로 제대로 표현할 수 있는 인코딩하는 방식을 정해줘야 함.
비주얼 스튜디오 > cpp 파일 다른 이름으로 저장 > 인코딩 방식 UTF-8 로 저장.
실행하면 한글이 깨지지 않고 제대로 출력되는 것을 확인할 수 있음.