[Unreal C++]1주차 강의 정리

개요

이번 주 분량의 강의를 들으면서 내용 정리를 하려고 하니 중복되는 내용도 많고 모두 정리하는 것은 비효율적이라고 생각했다. 그래서 강의 중 기억할만 한 것들은 미리 질문형식으로 써놓고 나중에 답을 적으면서 복습하는 형식으로 공부했다.

Private, Public의 차이?

언리얼 에디터 상에서 새로운 C++ 클래스를 생성할 때 Public으로 생성하는지 Private으로 생성하는지에 대한 차이가 무엇인지 물어보는 질문이다.

Public으로 생성하면 헤더는 public, 소스파일은 private에 저장되고 다른 소스파일에서 해당 헤더를 include할 수 있다.

Private으로 생성하면 헤더와 소스파일 모두 private에 저장되고 다른 소스파일에서 include할 수 없다.

CoreMinimal.h에 있는 것은?

CoreMinimal.h는 기본적인 로그나 FString, FName같은 기본 언리얼 자료형과 FMath등을 모두 include한 헤더파일이다.

 

리플렉션 시스템을 위한 구성요소는?

리플렉션 시스템을 위해서는

  • [해당 class].generated.h
  • UClass()
  • GENERATED_BODY()
  • 리플렉션할 변수, 함수에 UPROPERTY(), UFUNCTION()
#pragma once

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

UCLASS()
class STUDYPROJECT_API ABasePlatform : public AActor
{
	GENERATED_BODY()
	
public:	
	ABasePlatform();
	UPROPERTY(EditAnywhere, Category="Platform Setting")
	UStaticMesh* StaticMesh;

	UPROPERTY(EditAnywhere, Category = "Platform Setting")
	UMaterial* Material;

};

class를 모듈 밖으로도 내보내기 위해 사용되는 것은?

class 선언에서 [모듈명]_API 으로 매크로 선언된 부분이다.

아직 언급만하고 넘어가서 추가적인 공부가 필요하다.

actor를 뷰포트에 배치할때 원점으로 가는 이유는?

transformer를 가진 SceneComponent가 없어 위치정보가 없기 때문에 원점에 배치된다.

SceneComponent를 생성하고 root component로 설정하면 정상적으로 위치시킬 수 있다.

c++에서 component 생성과 에셋을 load하는 방법은?

//컴포넌트 생성
UComponent* Comp = CreateDefaultSubObject<UComponent>(TEXT("Comp");
//에셋 로드
static ConstructorHelpers::FObjectFinder<StaticMesh> StaticMeshAsset("Game/Asset 경로");
//에셋 로드 확인
if (StaticMeshAsset.Successed())
{
	StaticMesh = StaticMeshAsset.Object();
}

Log Category 만드는 법

헤더 파일에 추가하고 싶은 log 선언한다.

첫 파라미터는 추가할 logCategory 명, 두번째는 Default 상태, 세번째는 해당 카테고리가 허용하는 상태이다.

//Log 추가시 include할 헤더

DECLARE_LOG_CATEGORY_EXTERN(LogTest, Warning, All);

이후 log를 사용할 소스파일에서 log를 정의한 후 사용하면 된다.

//log를 사용할 .cpp 파일
//정의
DEFINE_LOG_CATEGORY(LogTest);

//사용
UE_LOG(LogTest, Log, TEXT("test"));

'Unreal' 카테고리의 다른 글

[Unreal C++] Enhanced Input System  (0) 2025.01.21
[Unreal] State Machine  (0) 2025.01.21
[Unreal C++] UFUNCTION  (0) 2025.01.20
[Unreal C++] Damage Framework  (0) 2025.01.12
[Unreal] Collision 채널  (1) 2025.01.08