Adventure of 빠타박스
article thumbnail
728x90
728x90
SMALL

Unreal Engine 4 /4.26버전으로 수업을 진행합니다. 해당 내용은 수업에 대한 내용과 함께 

개인적인 생각 및 정보를 토대로 글을 씀을 알립니다. 

본 내용에 대하여 상업적으로 이용 및 배포를 금합니다.

이전내용) https://ppatabox.tistory.com/125

 

 

 


UEC++_06 _ Debuging.pdf
0.62MB
UEC++_06 _ Debuging.docx
0.82MB

 

 

 

 

 

Defines.h

#pragma once

#define CheckFalse(p) { if(p == false) return; } //ChekckFalse가 그대로 치환 되서 P에 들어간다. 
#define CheckFalseResult(p, result) { if(p == false) return result; }

#define CheckTrue(p) { if(p == true) return; }
#define CheckTrueResult(p, result) { if(p == true) return result; }

#define CheckNull(p) { if(p == nullptr) return; }
#define CheckNullResult(p, result) { if(p == nullptr) return result; }

 

CLog.h

#pragma once

#include "CoreMinimal.h"

class U2110_03_API CLog
{
public:
	static void Log(int32 InValue); //정적함수 , 클래스명으로 접근 
	static void Log(float InValue);
	static void Log(const FString& InValue); // const라는 것은 상수 이 함수 내에서 InValue를 추정할 수 없다. &(레퍼런스)는 참조니까. 복사 안만들고 참조에서 받는(만약에 참조니까 InValue를 수정해버리면 원본에 영향을 미친다.)이것은 출력만 할 거니까 원본에 영향을 미치면 안되니까. const 레퍼런스를 사용한 것이다. 복사방지   
	static void Log(const FVector& InValue); // 벡터도 마찬가지
	static void Log(const FRotator& InValue); //로테이터도 많이 쓴다.
	static void Log(const UObject* InValue); //객체로 받을 것이기에 포인터 (모든 클래스의 최상위는 UObject
};

 

CLog.cpp

#include "CLog.h"

DEFINE_LOG_CATEGORY_STATIC(GP, Display, All)

void CLog::Log(int32 InValue)
{
	UE_LOG(GP, Display, L"%d", InValue);
}

void CLog::Log(float InValue)
{
	UE_LOG(GP, Display, L"%f", InValue); //플롯
}

void CLog::Log(const FString& InValue)
{
	UE_LOG(GP, Display, L"%s", *InValue); //문자열 출력할때 string s InValue부분은 유니코드 구역 그래서 포인터 붙인다. 
}

void CLog::Log(const FVector& InValue)
{
	UE_LOG(GP, Display, L"%s", *InValue.ToString());
}

void CLog::Log(const FRotator& InValue)
{
	UE_LOG(GP, Display, L"%s", *InValue.ToString());
}

void CLog::Log(const UObject* InValue)
{
	FString str;
	
	if (!!InValue) //null인지 판단.
		str.Append(InValue->GetName()); //null이 아니면 객체 이름을 출력 이름을 가져다가 넣어준다

	str.Append(!!InValue ? " Not Null" : "Null"); // null 이 아니면 . null이면 

	UE_LOG(GP, Display, L"%s", *str); // 문자열이니까. 똑같이 출력 
}

 

Global.h

#pragma once

#include "Kismet/KismetMathLibrary.h"
#include "Kismet/KismetSystemLibrary.h"

#include "Utilities/CHelpers.h"
#include "Utilities/Defines.h"
#include "Utilities/CLog.h"

 

C01_Log.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C01_Log.generated.h"

UCLASS()
class U2110_03_API AC01_Log : public AActor
{
	GENERATED_BODY()
	
public:	
	AC01_Log();

protected:
	virtual void BeginPlay() override;

public:	
	virtual void Tick(float DeltaTime) override;
};

 

C01_Log.cpp

#include "C01_Log.h"
#include "Global.h"

AC01_Log::AC01_Log()
{
	PrimaryActorTick.bCanEverTick = true;

}

void AC01_Log::BeginPlay()
{
	Super::BeginPlay();
	
	CLog::Log(10);
	CLog::Log(PI);
	CLog::Log("C01_Log"); //String
	CLog::Log(GetActorLocation()); //Vector 자신의 위치 
	CLog::Log(GetActorRotation()); //자신의 회전 값 
	CLog::Log(this); //자신의 객체 
}

void AC01_Log::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

 

 

 

참고링크)

 

테스트 주도 개발 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

 

728x90
728x90
LIST

'Programming > Unreal [C++]' 카테고리의 다른 글

[UnrealEngine] C++_07_Macro_DebugLines  (0) 2022.05.12
[UnrealEngine] C++_05_Mesh_Spawns  (0) 2022.05.10
[UnrealEngine] C++_04_Meshes_Cone, Sphere  (0) 2022.04.30
profile

Adventure of 빠타박스

@PPATABOX

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!