본문 바로가기

인생언리얼TPS

3.1 프로토타입 버전 - 로그카테고리

3.1-1 TPS 프로젝트 생성하기

Create - Game - Blank - C++ - 스타터컨텐츠 (ThirdPerson템플릿은 나중에  그래픽만 임포트 할 예정) 선택하고 프로젝트명을 TPSProject로 합니다. 이대로 이름을 만들어야 예제 파일을 수정없이 사용가능합니다.

Source-TPSProject폴더로 이동 Public/Private 폴더를 만들고 TPSProject.Build.cs파일만 빼고 h는 퍼블릭, cpp는 private폴더로 이동시켜줍니다. 

파일 구조를 만졌으므로 Visual Studio가 재구성할수 있도록 TPSProject폴더의 프로젝트명 + .uproject위를 우클릭후 Visual Studio 프로젝트 파일을 새로 만듭니다.

만들어진 TPSProject.sin 파일을 더블클릭해서 열어줍니다.

 

레벨생성하기

Ctrl+N New Level을 만들어 Default(Basic) 레벨을 선택합니다. 

Ctrl+S로 TPSMap으로 Maps폴더를 만들어 저장합니다.

Projecting Setting - Maps&Mode에서 StartUp Map, Default Map을 TPSMap으로 설정합니다. 에디터가 로딩되면 자동실행됩니다.

OutLiner에서 Floor를 선택해서 Transform을 다음과 같이 합니다.

 

유틸리티 매크로 작성하기\

TPSProject.h

#pragma once

#include "CoreMinimal.h"

DECLARE_LOG_CATEGORY_EXTERN(TPS, Log, All);
#define CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
#define PRINT_CALLINFO() UE_LOG(LogTemp, Warning, TEXT("%s"), *CALLINFO)
#define PRINT_LOG(fmt, ...) UE_LOG(TPS, Warning, TEXT("%s %s"), *CALLINFO, *FString::Printf(fmt, ##__VA_ARGS__))

TPSProject.cpp

#include "TPSProject.h"
#include "Modules/ModuleManager.h"

IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, TPSProject, "TPSProject" );
DEFINE_LOG_CATEGORY(TPS);

 

TPSProjectGameModeBase.h 

생성자를 추가해줍니다.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "TPSProjectGameModeBase.generated.h"

/**
 * 
 */
UCLASS()
class TPSPROJECT_API ATPSProjectGameModeBase : public AGameModeBase
{
	GENERATED_BODY()

public:
	ATPSProjectGameModeBase();
	
};

TPSProjectGameModeBase.cpp

생성자를 구현해줍니다.

#include "TPSProjectGameModeBase.h"
#include "TPSProject.h"

ATPSProjectGameModeBase::ATPSProjectGameModeBase()
{
	PRINT_CALLINFO();
	PRINT_LOG(TEXT("My Log : %s"), TEXT("TPS project!!"));
}

생성자를 새로 만들었으니 에디터를 닫고 빌드후 에디터를 열고 OutLog를 클릭해보면 로그가 많은데

SearchLog에 TPS를 입력하면 관련 로그만 볼수 있습니다. 생각보다 필터링이 안되서 전 TPS를 LogTps로 3군데 변경했습니다. 리빌드후에 적용됩니다. 왜 로그 카테고리를  정의하는지 아시겠죠