상세 컨텐츠

본문 제목

Learning Unreal 4 언리얼 공부일지 - UCLASS와 class 내용 변경

Computer Science/Unreal Engine

by 2022. 1. 16. 03:17

본문

반응형

(언리얼 강의나 구글링을 통해 공부하면서 개인적으로 필요한 것들을 정리하는 포스팅이다)

 

UCLASS()
class UNREALINTRODUCTION_API AMyActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AMyActor();

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

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

위 예제 코드는 unreal에서 actor 기본 클래스를 생성한 것이다.

위 코드에서 class위에 붙은 UCLASS라는 것은 C#에서의 reflextion과 비슷한 역할이라고 한다.

C#에서의 reflextion은 객체의 클래스 타입, 메서드, 프로퍼티 등의 메타 정보를 런타임 중에 알아내는 기능을 제공한다고 한다. 자세한 것은 C# 교과서를 참고하자.

https://www.csharpstudy.com/Practical/Prac-reflection.aspx

 

.NET Reflection 1 - C# 프로그래밍 배우기 (Learn C# Programming)

.NET Reflection .NET Reflection은 .NET 객체의 클래스 타입, 메서드, 프로퍼티 등의 메타 정보를 런타임 중에 알아내는 기능을 제공한다. 또한, 이러한 메타 정보를 얻은 후, 직접 메서드를 호출하거나 프

www.csharpstudy.com

 

C#에는 이러한 기능들이 있기만, C++에는 없기에 unreal에서 자체적으로 개발한 것이 UCLASS를 통해 언리얼 클래스임을 나타낸다.

 

언리얼에도 Naming Convention이 있고, class명인 AActor의 'A'가 그 예 이다. 

 

현재 MyActor라는 클래스로 MyActor1이라는 오브젝트를 생성하고 오른쪽 디테일 창에서 보이듯 StaticMesh를 변경한 상태이다.

오브젝트의 StaticMesh는 변경되었지만, Class는 변경되지 않았는데, Class에서 SM(Static Mesh)을 변경하기위한 코드를 짜보자.

 

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


#include "MyActor.h"
#include "Components/StaticMeshComponent.h"

// Sets default values
AMyActor::AMyActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	Mesh = CreateDefaultSubobject<UStaticMeshComponent>((TEXT("MESH")));

	ConstructorHelpers::FObjectFinder<UStaticMesh> SM(TEXT(""));
}

// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void AMyActor::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

위 코드에서 추가한 부분은 

ConstructorHelpers::FObjectFinder<UStaticMesh> SM(TEXT(""));

이다. 위 코드에서 TEXT() 부분은 인코딩 과정에서 오류가 나지 않기 위해서 있는 것이라고 하고, 그 안에 string으로 적용할 Static Mesh의 경로를 입력해준다. 

입력 후 IDE에서 빌드하거나, 언리얼 엔진에서 컴파일해주면 class의 static mesh가 바뀐 것을 볼 수 있다. 

반응형

관련글 더보기