본문 바로가기
Unreal C++/C++ - History

11 출력 로그 사용 / Obstacle Assault

by pp336 2024. 12. 1.

 

 언리얼에서 원하는 목적을 달성하기 위해 게임 레벨을 만들다보면 만든 기능들이 제대로 작동하는지 확인하고 싶을때 검증하고 고치는 것을 디버깅이라고 표현한다. 이전에 Warehouse에서 블루프린트를 이용하여 디버깅 로직구조를 만들어놓고 검증을 하였는데, C++에서도 만든 기능이 제대로 돌아가는지 확인하는 작업을 로그문을 통해서 구현할 수 있다.

 

레벨 디자인에서 특정한 기능을 가진 5개의 액터에 대한 정보가 로그로 출력되고 있는 모습

 

 

 

 


 

 

 

 

로그문(Log Statement)

 로그 문은 특정 변수의 값을 어떠한 텍스트 정보로 출력할지를 결정 할 수 있다.

 - UE_Log(LogTemp, Display, Text("My Text: %f"), MyVar);

 

    Log Temp / 카테고리에 대한 항목  - 언리얼의 어느부분에서 정보가 발생하는지

    Display / 메시지의 발생 수준을 지정 - Display는 언리얼 Console과 Log파일에서 해당 정보가 발생

    Text / 로그 메시지의 보여주고 싶은 데이터를 나타내는 항목, %는 포맷지정자로서 문자를 값으로 정보를 표현을 지정

    MyVar / 데이터 값을 참조할 변수 항목

 

 

MovedDistance 항목의 변수를 참조하여, 그 값을 불러오도록 설정
에디터 플레이를 시작하고 ` 키를 눌러 로그를 확인해보면 로그가 정상적으로 출력되고 있음을 확인할 수 있다.

 

 

 

더 확장하여, DistnacedMoved가 MovedDistance 값을 초과했을때 어느정도까지 수치를 알 수 있는지 검증해보려면

DistanceMoved와 MovedDistance가 어느정도까지 오차가 발생하는지 또한 확인이 가능하다.

 

 

 

 

여기에 FString 구조체를 추가하여 해당 액터의 이름을 얻을 수 있게 해놓고 로그에 표시를하면

 

특정 액터에 어떤 수치만큼 오차를 일으키는지 검증이 가능해지고, 앞으로 이를 통해 기능들의 문제 해결방법을 모색할 수 있게 되었다.

 

 

 

 

 

언리얼 로깅에 관한 공식 문서

https://dev.epicgames.com/documentation/en-us/unreal-engine/logging-in-unreal-engine

 

 

 

 


 

 

 

 

 

Unreal Eninge 4 Snippets을 확장 프로그램을 사용체하면 복잡한 로그구문을 ulog를 사용하여 자동완성을 해준다.