언리얼엔진5 공부

언리얼엔진 C++ 챕터1 - 1. 액터 소스파일의 기본 구성

Client Side 2025. 9. 3. 16:46

헤더파일

#pragma once

#include "CoreMinimal.h" // 언리얼 엔진의 가장 기본적인 기능들을 포함하는 헤더
#include "GameFramework/Actor.h"  // 액터의 기본 기능을 가져오는 헤더
#include "Item.generated.h"  // 리플렉션 시스템을 위해 자동으로 생성되는 헤더

UCLASS()  // 언리얼 엔진이 이 클래스를 인식하고 관리할 수 있게 하는 매크로.
class SPARTAPROJECT_API AItem : public AActor  // 클래스 선언
		// SPARTAPROJECT_API 는 DLL 내보내기/가져오기를 위한 매크로
        // 클래스 이름은 AItem
        // A는 액터(Actor)에 자동으로 붙는다.
        // 오브젝트는 UObject에서 U (Unreal) 
        // 구조체나 일반 클래스는 F
{
	GENERATED_BODY()   // 언리얼엔진의 리플렉션 시스템을 위한 코드를 자동 생성한다.
	
public:	
	// Sets default values for this actor's properties
	AItem();   // 생성자. 액터가 처음 생성될때 호출된다.

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

};

 

 

cpp파일

 

#include "Item.h"

AItem::AItem()
{
	PrimaryActorTick.bCanEverTick = true;
}

void AItem::BeginPlay()
{
	Super::BeginPlay();
}

void AItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}

 

 

처음에 액터 클래스 생성 후 레벨에 배치를 하면 원하는 위치에 배치가 되지 않고 엉뚱한 곳에 배치가 된다.

액터는 기본적으로 하나 이상의 컴포넌트를 지녀야 하는데 루트컴포넌트가 없어서 좌표 인식도 못하고 제대로된 액터로서의 기능을 하지 못한다.

 

 

블루프린트 클래스로 액터를 생성하면 기본적으로 씬 컴포넌트가 추가되어있다. 이 액터를 레벨에 배치하면 원하는 위치에 배치가 가능하다. 컴포넌트는 기능이 있는 하나의 부품이다.

가장 기본이 되는 루트 컴포넌트가 있어야 한다.

 

어떤 컴포넌트를 루트컴포넌트로 지정해야 할까.

 

Scene 컴포넌트를 주로 루트 컴포넌트로 사용한다.

시각적인 출력은 없으며 좌표를 가지고 있다.

 

 

Static Mesh 컴포넌트의 2가지 요소

1. 스태틱 메시 (모양)

2. 머티리얼 (질감)

 

이제 이런 부분들을 하나씩 코드로 작성해줘야 한다.