본문 바로가기

Unreal

UE - 3인칭 TPS 프로젝트 생성하기

학습 목표

  • TPS 프로젝트 생성

 

구현 순서

  • 프로젝트 생성
  • 소스 코드 관리
  • 레벨 생성
  • 유틸리티 매크로 작성

 

 

1. 프로젝트 생성하기

  1. Project Type : Blank / C++
  2. StartContent 설정
  3. Name : TPSProject

 

2. 소스 코드 관리하기

프로젝트에서 사용하는 .cpp 파일과 .h 파일을 나누어 관리할 수 있도록 폴더를 만들어 각각 옮겨주기.

 

 

1. Source → TPSProject 로 이동

 

 

2. public, private 폴더 생성

생성 이후 .cpp 파일을 private에 .h 파일은 public에 이동합니다.

 

 

 

3. 해당 구조로 프로젝트를 다시 재생성 시키도록 처리.

루트 경로로 이동한뒤 TPSProject.uproject를 우클릭하고 Generate Visual Studio project file를 클릭합니다.

 

 

 

4. 솔루션 탐색기 확인

프로젝트의 솔루션 탐색기에서 .cpp는 private에 .h 파일들은 public에 들어간 것을 확인할 수 있습니다.

 

 

3. 레벨 생성하기.

New Level 선택
이후 Basic 선택

 

 

Maps 폴더 생성

TPSMap으로 저장.

 

 

기본 맵 설정 변경

 

 

4. 유틸리티 매크로 작성하기

#define 전처리문을 이용하여 디버그 시 로그를 표시하기 위해 몇 가지 매크로를 만듭니다. TPSProject.h, TPSProject.cpp 파일에 작성해서 사용하게 됩니다.

 

 

TPSProject.h

#define CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT("("))

CALLINFO 매크로를 테스트하기 위해 GameModeBase 클래스를 상속받는 C++ 클래스 생성

 

 

GameModeBase Class 생성 후 생성자에 CALLINFO 테스트 추가

// Fill out your copyright notice in the Description page of Project Settings.

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

ATPSProjectGameModeBase::ATPSProjectGameModeBase()
{
	UE_LOG(LogTemp, Warning, TEXT("%s"), *CALLINFO);
}

 

 

빌드 후 언리얼 실행 시

LogTemp: Warning: ATPSProjectGameModeBase::ATPSProjectGameModeBase(9) 라는 로그를 확인할 수 있습니다.

 

 

매크로 정의 후 사용

 

TPSProject.h

// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"

#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(LogTemp, Warning, TEXT("%s %s"), *CALLINFO, \\
*FString::Printf(fmt, ##__VA_ARGS__))

 

 

TPSProjectGameModeBase.cpp

// Fill out your copyright notice in the Description page of Project Settings.

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

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

 

 

출력 로그 결과

로그 결과를 확인할 수 있습니다.