본문 바로가기

Engine/Unreal 그때그때 끄적끄적

[Unreal] Unreal C++ 로그찍기

 

언리얼을 처음깔고 라이브러리를 보면 화면과같은 상태일것이다  실행버튼을 누르고 프로젝트를 만들면

 

 

사진과같이 카테고리를 선택하는 창이 나온다 게임을 만들것이기에 게임을 선택하고 다음을 누르겠다

 

 

템플릿을 선택하라고 하는데 기본을 누르고 다음을 누르면된다

 

 

블루프린트 클래스가 기본설정일탠데 C++로 만들것이기떄문에 C++로 변경해주면된다

나는 프로젝트 경로에 한글이 들어가 오류가있었는데 프로젝트 이름과 경로를 영어로만 해주자

프로젝트 경로와 이름은 영어로해줘야지 빌드 오류가 없다

위와같이 해준다음에 프로젝트 생성을 누르자

 

 

위에보이는 화면이 언리얼 인터페이스이고

아래에 보이는 화면이 유니티의 인터페이스이다

하나의 창을 제외하고 나머지창은 비슷한기능을 담당한다

비슷비슷한 기능을하는 창끼리 짝지어보자면

Unity Unreal
Sceen뷰 뷰포트
Hierarchy창 월드 아웃라이너
inspector창 디테일
project 창 콘텐츠 브라우저
유니티에서는 따로 창이없음 액터 배치

액터 배치창 같은경우는 자주쓰는 오브젝트들이 프리팹으로 들어있는 느낌이라고 한다

 

콘텐츠 브라우저에서 우클릭으로 새C++ 클래스를 만들어보자

 

.Actor 부모클래스 선택

 

이름을 설정하고 클래스 생성

 

Actor 클래스를 생성하면 사진과같이 헤더 파일과 cpp 파일이 생성된것이 보인다

 

기본적으로

생성자

유니티의 update 함수와 같은 동작을하는 Tick 함수 : 매 프레밍마다 호출

유니티의 Start 함수와 같은 동작을하는 BeginePlay 함수 : 게임이 시작될때 호출

이렇게 3가지 함수가 오버라이딩 되어있는 헤더 파일이 보일것이다

해당 함수들을 cpp파일에서 정의해서 사용하면된다

 

Tick 함수가 필요없을 경우 cpp와 헤더파일에서 Tick 함수를 지우고

PrimaryActorTick.bCanEverTick = true; 틱함수를 매프레임 호출하게하는 코드까지 지워주면된다

매프레임 호출되기때문에 필요없을때 지워준다면 게임의 퍼포먼스 향상에 도움이된다

 

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


#include "MyActor.h"

// Sets default values
AMyActor::AMyActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	UE_LOG(LogTemp, Log, TEXT("Constructor!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"));
}

// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	UE_LOG(LogTemp, Log, TEXT("BeginPlay!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"));

}

// Called every frame
void AMyActor::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	UE_LOG(LogTemp, Log, TEXT("Tick!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"));
}

 

Unreal 의 로그를 찍는방법인 UE_LOG(LogTemp, Log, TEXT("출력할 텍스트"));를 통해 해당함수들이 언제 호출이되는지 확인해보자

UE_LOG매크로 함수의 매개변수로는 로그 카테고리, 로그 상세수준, 로그 메세지 로이루어져있다

    // 로그 카테고리, 로그 상세수준, 로그 전달 내용
    UE_LOG(logtemp, Log, TEXT("Log Message"));
 
    //로그 파일에 출력
    UE_LOG(logtemp, Verbose, TEXT("Verbose Log Message"));
    //로그 파일에 출력, 상세 내용을 포함
    UE_LOG(logtemp, VeryVerbose, TEXT("VeryVerbose Log Message"));
    //콘솔,파일에 출력
    UE_LOG(logtemp, Display, TEXT("Display Log Message"));
    //파일, 에디터 로그에 출력
    UE_LOG(logtemp, Log, TEXT("Log Message"));
    //파일, 에디터 로그에 노란색으로 출력
    UE_LOG(logtemp, Warning, TEXT("Warning Log Message"));
    //파일, 에디터 로그에 빨간색으로 출력
    UE_LOG(logtemp, Error, TEXT("Error Log Message"));
    ////파일과 에디터 로그에 빨간색으로 출력되며 프로그램을 종료
    //UE_LOG(logtemp, Fatal, TEXT("Fatal Log Message"));
    // Fatal은 충돌이 나기에 가급적 사용을 하지않는게 좋다고한다

로그 카테고리의 경우 일반적으로는 logtemp를 사용해주면되고 필요한경우 만들어서 어느정도는 언리얼에서 제공해주며, 필요한경우 만들어서 사용하면 된다

UE_LOG(LogTemp, Log, TEXT("%s"), *myMoveDirection.ToString());

혹시 다른 Fvector 값의 로그가 필요한경우 ToString()을사용하여 문자열로 바꾸어 출력하면 된다

 

컴파일은 2가지 방식중에 편한방법으로하면된다

에디터에서 컴파일하는 방법과 비쥬얼스튜디오에서 빌드를통한 컴파일방법

편한방법을 사용할것

 

컴파일을 한다음 [창] -> [개발자 툴] -> [출력 로그]를통해 찍은 로그들을 확인할 수 있다.

 

'Engine > Unreal 그때그때 끄적끄적' 카테고리의 다른 글

[Unreal] UPROPERTY  (0) 2021.10.05
[Unreal]언리얼 함수 메모장  (0) 2021.10.05
[Unreal]C++클래스 삭제  (0) 2021.10.05
[Unreal] c++ 클래스 생성 오류  (0) 2021.09.19
[Unreal] C++ Visual Studio 세팅하기  (0) 2021.07.05