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
'🅿🆁🅾🅶🆁🅰🅼🅼🅸🅽🅶 > Uɴʀᴇᴀʟ [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 |