Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- C++
- 커스텀로그
- 연산자오버로딩
- 코딩테스트
- 링크드리스트
- 백준
- 탐색기법
- 게임개발
- 프로그래밍
- unreal
- 언리얼로그
- dfs
- 언리얼
- 개발자
- 개발
- 미라클모닝
- 구조체포인터
- permutation
- 구조체
- 게임프로그래밍
- 오늘의에러
- 내가해냄
- TPS
- 얌얌코딩
- UE5
- 재귀함수
- fstring
- c++자료구조
- 자료구조
- 코딩
Archives
- Today
- Total
All is well
[UE5/TPS/Proto01] Project File 생성 / Custom log 생성 본문
01) Project file 생성



- 니셜 폴더 생성 → 이니셜 폴더에 Maps 하위 폴더 생성 → Map 생성 후 해당 폴더에 저장
- Game Mode Base class를 상속받는 `TPS_GameModeBase` c++ class 생성
- Project Settings - Maps & Modes에서 Default Mode, Default Maps 설정
02) `TPSProject.h`에 매크로를 이용한 custom log 생성
매크로 : 디버깅이 어렵기 때문에 함수로 구현하는 것을 일반적으로 권장
매크로 : 띄어쓰기에 민감하므로 주의해서 작성할 것
// TPSMAR.h
#pragma once
#include "CoreMinimal.h"
/***** Custom Log Category, Custom Log 생성 *****/
/* TPS 라는 custom log category 생성 */
DECLARE_LOG_CATEGORY_EXTERN(TPS, Log, All);
/* CALLINFO : 현재 실행 중인 함수와 코드 줄 번호를 포함하는 문자열을 반환하는 매크로 */
#define CALLINFO ( FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")") )
/* PRINT_CALLINFO : CALLINFO를 로그로 출력하는 매크로 */
#define PRINT_CALLINFO() UE_LOG(TPS, Warning, TEXT("%s"), *CALLINFO );
/* PRINT_LOG : 형식화된 문자열(fmt)과 함께 CALLINFO를 로그로 출력하는 매크로*/
#define PRINT_LOG(fmt, ...) UE_LOG(TPS, Warning, TEXT("%s %s"), *CALLINFO, *FString::Printf(fmt, ##__VA_ARGS__))
- TPS 라는 custom log category 생성
- `CALLINFO` : 현재 실행 중인 함수와 코드 줄 번호를 포함하는 문자열을 반환하는 매크로
- `__FUNCTION__` : 현재 실행 중인 함수의 이름을 반환
- `__LINE__` : 해당 코드가 실행된 소스 파일의 줄 번호를 반환
- `PRINT_CALLINFO` : `CALLINFO`를 로그로 출력하는 매크로
- 실행 중인 함수와 줄 번호를 경고(Warning) 로그로 출력
- `PRINT_LOG` : 형식화된 문자열(`fmt`)과 함께 `CALLINFO`를 로그로 출력하는 매크로
- UE_LOG 첫 번째 매개변수 : 로그 카테고리(TPS)
- UE_LOG 두 번째 매개변수 : 로그 수준(Warning)
- UE_LOG 세 번째 매개변수 : 실제 출력될 메시지 ("%s %s"는 `CALLINFO`와 `fmt`의 출력 결과를 합침)
- `*FString::Printf(fmt, ##**VA_ARGS**)` : 가변 인수를 포함하여 형식화된 문자열 생성
- ⭐ `FString`은 `*`(포인터)로 넣어준다
- `fmt` : 출력할 문자열 형식 - Format String을 포함한 문자열
- `...` : fmt에 맞춰 삽입될 값들 - 가변 인수
- `Printf` : C++의 sprintf와 비슷하게 동작
03) `TPSProject.cpp` 에서 Custom Log 사용하기
- `TPSProject.cpp`에 custom log 사용을 위해 `DEFINE_LOG_CATEGORY(TPS);` 추가
// TPSMAR.cpp
#include "TPSMAR.h"
#include "Modules/ModuleManager.h"
IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, TPSMAR, "TPSMAR" );
/***** Custom Log Category, Custom Log 사용 *****/
DEFINE_LOG_CATEGORY(TPS);
04) ` TPS_GameModeBase .cpp` 에서 Custom Log 사용하기
- TPS_GameModeBase.h에 생성자 생성
- TPS_GameModeBase .cpp의 생성자에서 매크로 사용
- `TPSMAR.h` 파일 include
- 생성자에서 custom log 사용
// TPS_GameMode.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "TPS_GameMode.generated.h"
UCLASS()
class TPSPROJECT_API ATPS_GameMode : public AGameModeBase
{
GENERATED_BODY()
public:
/***** TPS_GameMode.cpp 에서 Custom Log 사용하기 - 250203 *****/
ATPS_GameMode();
};
// TPS_GameMode.cpp
#include "TPS_GameMode.h"
#include "TPSProject.h" // Custom log 사용을 위해 include
ATPS_GameMode::ATPS_GameMode()
{
/***** TPS_GameMode.cpp 에서 Custom Log 사용하기 - 250203 *****/
PRINT_LOG( TEXT("My Log : %s"), TEXT("TPS Project!") );
PRINT_CALLINFO();
}
05) 추가한 custom log가 제대로 실행되는지 확인

- TPSGameMode C++ 클래스를 상속받은 BP_TPSGameMode 생성
- 실행 후 Output Log에 Custom log가 찍히는지 확인
'UE > TPS' 카테고리의 다른 글
| [UE5/TPS/Proto04] Bullet 구현 (0) | 2025.02.12 |
|---|---|
| [UE5/TPS/Proto03] Player Input Binding (0) | 2025.02.10 |
| [UE5/TPS/Proto02] Player 생성 / Camera 셋팅 (0) | 2025.02.09 |