Unreal Engine/0. Unreal 5

Unreal 기본 cpp 파일 구조

ljw4104 2023. 7. 7. 18:48

1. Header와 Cpp 파일

기본적으로 cpp파일은 무조건 Private로 생성되고 Public으로 설정 시 Header 파일은 public으로 생성된다.

 

2. 기본 뼈대(AItem.h)

  • Header파일 : 기본적으로 클래스에 포함되어야 하는 헤더파일들과 클래스 정의, 멤버변수, 멤버함수의 선언만 포함됨.
  • Cpp파일 : Header에서 선언된 함수들을 구현하는 부분
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"			// 액터가 동작하는데 필요한 최소한의 기능이 포함
#include "GameFramework/Actor.h"	// AActor 클래스를 상속받기 위한 헤더
#include "Item.generated.h"			// 리플렉션 시스템에 필요한 것들이 담겨있음

UCLASS()
class SLASH_API AItem : public AActor
{
	GENERATED_BODY()
	
public:	
	AItem();
	virtual void Tick(float DeltaTime) override;

protected:
	virtual void BeginPlay() override;
};

현재 클래스를 Actor에 상속받게 하였기때문에 클래스 이름 앞에 A가 붙혀있다.

처음 생성시에는 다음과 같은 헤더파일이 기본적으로 생성된다.

언리얼 C++을 보기전에 Unreal Reflection System에 관해서 이해를 해야하는데 난 아직 이해를 잘 못했다.

 

  • UCLASS() : Unreal Reflection System을 사용하기 위해 반드시 적어주어야 한다.
  • SLASH_API : DLL파일을 불러온다는데 무슨 내용인지는 잘 모르겠다. UCLASS와 SLASH_API는 C++ 클래스 생성시 자동으로 포함되어 있다.
  • GENERATED_BODY() : Unreal Reflection System 과 관련된 것.

클래스 생성자를 제외한 멤버 함수

멤버 함수 이름 기능
virtual void Tick(float DeltaTime) override; 유니티의 Update함수와 동일, 매 프레임마다 함수가 실행됨.
virtual void BeginPlay() override; 유니티의 Start함수와 동일, 객체가 만들어질 때 실행됨.

 

2. 기본 뼈대 (AItem.cpp)

// Fill out your copyright notice in the Description page of Project Settings.


#include "Items/Item.h"

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

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

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

헤더파일에서 정의된 함수들의 구현부가 담겨져있다.

BeginPlay 함수나 Tick함수같은 것들은 부모 클래스의 함수를 호출해주어야 한다.