[UE] Mesh, Log
언리얼 엔진 로그(Unreal Engine log)는 언리얼 엔진 게임 개발 플랫폼에서 생성된 로그 메시지 시스템을 말한다. 이러한 메시지는 렌더링, 물리, 네트워킹 및 스크립팅 시스템을 포함하여 엔진 내의 다양한 시스템 및 구성 요소의 동작과 상태에 대한 정보를 제공한다.
목차
Mesh
01_Spawn | |
C02_Mesh C02_Mesh_Sphere C02_Mesh_Cone |
|
Utilities | |
CHelpers.h |
C02_Mesh_Sphere & BP_C02_Mesh_Sphere 생성
C02_Mesh_Sphere.h
#pragma once
#include "CoreMinimal.h"
#include "01_Spawn/C02_Mesh.h"
#include "C02_Mesh_Sphere.generated.h"
UCLASS()
class U2212_03_API AC02_Mesh_Sphere : public AC02_Mesh
{
GENERATED_BODY()
public:
AC02_Mesh_Sphere();
};
C02_Mesh_Sphere.cpp
#include "01_Spawn/C02_Mesh_Sphere.h"
#include "Global.h"
AC02_Mesh_Sphere::AC02_Mesh_Sphere()
{
UStaticMesh* mesh = nullptr;
CHelpers::GetAsset<UStaticMesh>(&mesh, "StaticMesh'/Game/Meshes/Sphere.Sphere'");
Mesh->SetStaticMesh(mesh);
}
C02_Mesh_Cone & BP_C02_Mesh_Cone 생성
C02_Mesh_Cone.h
#pragma once
#include "CoreMinimal.h"
#include "01_Spawn/C02_Mesh.h"
#include "C02_Mesh_Cone.generated.h"
UCLASS()
class U2212_03_API AC02_Mesh_Cone : public AC02_Mesh
{
GENERATED_BODY()
public:
AC02_Mesh_Cone();
};
C02_Mesh_Cone.cpp
#include "01_Spawn/C02_Mesh_Cone.h"
#include "Global.h"
AC02_Mesh_Cone::AC02_Mesh_Cone()
{
UStaticMesh* mesh = nullptr;
CHelpers::GetAsset<UStaticMesh>(&mesh, "StaticMesh'/Game/Meshes/Cone.Cone'");
Mesh->SetStaticMesh(mesh);
}
C03_Spawner & BP_C03_Spawner
C03_Spawner.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C03_Spawner.generated.h"
UCLASS()
class U2212_03_API AC03_Spawner : public AActor
{
GENERATED_BODY()
private:
UPROPERTY(EditAnywhere, Category = "Settings")
//TSubclassOf는 class를 제한하는 역할. AC_032_Mesh 클래스 이하로 선택할 수 있도록 제한.
//SpawnClasses[3] 배열로 생성.
TSubclassOf<class AC02_Mesh> SpawnClasses[3];
public:
AC03_Spawner();
protected:
virtual void BeginPlay() override;
};
C03_Spawner.cpp
#include "01_Spawn/C03_Spawner.h"
#include "Global.h"
#include "C02_Mesh.h"
AC03_Spawner::AC03_Spawner()
{
}
void AC03_Spawner::BeginPlay()
{
Super::BeginPlay();
for (int32 i = 0; i < 3; i++)
{
if (SpawnClasses[i] == nullptr) //내부적으로 포인터를 가지고 있기 때문에 nullptr 체크가 가능하다.
continue;
FVector location = GetActorLocation();
FTransform transform;
transform.SetLocation(FVector(location.X, location.Y + i * 350, location.Z));
GetWorld()->SpawnActor<AC02_Mesh>(SpawnClasses[i], transform);
}
}
BP_C03_Spawner
- 위의 마킹한 부분은 C03_Spawner에서 만든 TSubclassOf<class AC02_Mesh> SpawnClasses[3]; 부분이다.
- 세팅(언리얼에 Settings라고 입력하면 한국어버젼은 세팅이라 인식) - Spawn Classes - 매쉬 설정
- 0: BP_C02_Mesh
- 1: BP_C02_Mesh_Cone
- 2: BP_C02_Mesh_Sphere
실행화면
Log 기록하기
언리얼 엔진 로그(Unreal Engine log)는 언리얼 엔진 게임 개발 플랫폼에서 생성된 로그 메시지 시스템을 말한다. 이러한 메시지는 렌더링, 물리, 네트워킹 및 스크립팅 시스템을 포함하여 엔진 내의 다양한 시스템 및 구성 요소의 동작과 상태에 대한 정보를 제공한다.
언리얼 엔진 로그는 런타임 동안 엔진에 의해 생성된 모든 메시지의 연대순 레코드를 포함하는 텍스트 파일이다. 이러한 메시지는 문제를 진단하고 문제를 디버그하며 성능을 최적화하는 데 사용할 수 있다.
로그는 엔진 기능의 다른 측면에 해당하는 몇 가지 다른 범주로 구분됩니다. 이러한 범주에는 다음이 포함된다:
로그: 이 범주에는 특정 시스템 또는 구성 요소와 관련되지 않은 일반 메시지가 포함된다.
경고: 이 범주에는 잠재적인 문제 또는 주의가 필요할 수 있는 문제를 나타내는 메시지가 포함되어 있다.
오류: 이 범주에는 엔진 충돌 또는 고장의 원인이 될 수 있는 심각한 오류를 나타내는 메시지가 포함되어 있다.
디버깅: 이 범주에는 엔진 문제를 디버깅하고 진단하는 데 유용한 메시지가 포함되어 있습니다.
상세: 이 범주에는 엔진 동작에 대한 추가 정보를 제공하는 자세한 메시지가 포함되어 있습니다.
개발자는 언리얼 엔진 로그를 구성하여 특정 범주의 메시지만 표시하거나 특정 키워드 또는 문자열을 기준으로 메시지를 필터링할 수 있다. 이는 특정 문제에 집중하거나 로그의 노이즈 양을 줄이는 데 유용할 수 있다. 또한 나중에 분석할 수 있도록 로그를 파일에 저장하거나 엔진의 디버깅 도구 내에서 실시간으로 표시할 수 있다.
01_Spawn | |
C02_Mesh.h .cpp C02_Mesh_Sphere.h .cpp C02_Mesh_Cone.h .cpp |
|
02_Profilier | |
C01_Log.h .cpp | |
Utilities | |
CHelpers.h CLog.h .cpp |
C03_Log
CLog.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C01_Log.generated.h"
UCLASS()
class U2212_03_API AC01_Log : public AActor
{
GENERATED_BODY()
public:
AC01_Log();
protected:
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
};
CLog.cpp
#include "02_Profiler/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");
CLog::Log(GetActorLocation());
CLog::Log(GetActorRotation());
CLog::Log(this);
CLog::Log(__FILE__);
CLog::Log(__FUNCTION__);
CLog::Log(__LINE__);
}
void AC01_Log::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
CLog.cpp에는 #include"Global.h"를 넣으면 안 된다.
- 해당 경우 CLog.cpp에서 Global.h를 참조하고 Global에서 다시 CLog를 다시 참조한다.
- 순환참조가 일어나서 문제가 생긴다.
C01_Log & BP_C01_Log
C01_Log.h
#pragma once
#include "CoreMinimal.h"
class U2212_03_API CLog
{
public:
//& 복사방지. const 수정금지
static void Log(int32 InValue);
static void Log(float InValue);
static void Log(const FString& InValue);
static void Log(const FVector& InValue);
static void Log(const FRotator& InValue);
static void Log(const UObject* InValue);
};
C01_Log.cpp
#include "Utilities/CLog.h"
DEFINE_LOG_CATEGORY_STATIC(GP, Display, All)
void Log(int32 InValue)
{
//GLog->Log("GP", ELogVerbosity::Display, FString::FromInt(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); //*char에서 바꿀때는 *붙인다.
}
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) // InValue != nullptr과 같은 의미 //!!는 Not Nullptr를 의미한다.
str.Append(InValue->GetName());
//객체가 있는지 체크
str.Append(!!InValue ? " Not Null" : "Null");
UE_LOG(GP, Display, L"%s", *str);
}
실행화면
'⭐ Unreal Engine > UE FPS TPS' 카테고리의 다른 글
[UE] Character Animation, Collsion (0) | 2023.03.08 |
---|---|
[UE] Character, GameMode (0) | 2023.03.07 |
[UE] Log 출력하기, Draw Debug 구현 (0) | 2023.03.03 |
[UE] Properties (0) | 2023.02.28 |
[UE] Unreal C++ Settings, 파일이 안 열리는 문제해결 방법, 언리얼 코드 수정과 삭제 (0) | 2023.02.27 |
댓글
이 글 공유하기
다른 글
-
[UE] Character, GameMode
[UE] Character, GameMode
2023.03.07 -
[UE] Log 출력하기, Draw Debug 구현
[UE] Log 출력하기, Draw Debug 구현
2023.03.03 -
[UE] Properties
[UE] Properties
2023.02.28 -
[UE] Unreal C++ Settings, 파일이 안 열리는 문제해결 방법, 언리얼 코드 수정과 삭제
[UE] Unreal C++ Settings, 파일이 안 열리는 문제해결 방법, 언리얼 코드 수정과 삭제
2023.02.27