상세 컨텐츠

본문 제목

2023.03.11 언리얼엔진

언리얼엔진

by simstealer 2023. 3. 11. 17:59

본문

○ C++로 언리얼엔진 해보기

Config - 게임 프로젝트의 설정 값

Content - Asset 관리

Intermediate - 프로젝트 관리에 필요한 임시 파일

Saved - 결과물

 

1. [파일] - [새로운 C++ 클래스 생성] - [Actor 선택] - [이름 설정하고 생성]

 - 설정한 이름으로 cpp, h 파일이 생성됩니다.

이미지의 Fountain를 더블클릭하면 비주얼스튜디오가 열립니다.

2. 솔루션 구성

3. 옵션 설정

4. 에셋 다운로드

5. 새 레벨 열기

[파일] - [새 레벨]

 

6. Static Mesh 배치

라이팅 소스, 스카이라이트를 스태틱에서 무버블로 변경해놓고 나중에 스태틱으로 다시 변경하는 것이 편하다. 그렇지 않으면 라이팅 빌드를 무언가 추가 될때마다 계속 해주어야한다.

 

7. Fountain Source

Fountain.cpp

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


#include "Fountain.h"

// Sets default values
AFountain::AFountain()
{
 	// 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;
	Body = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BODY"));
	Water = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WATER"));
	Light = CreateDefaultSubobject<UPointLightComponent>(TEXT("LIGHT"));
	Splash = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("SLPASH"));

	RootComponent = Body; // 부모 액터는 Body
	Water->SetupAttachment(Body); // Water는 Body의 자식
	Light->SetupAttachment(Body);
	Splash->SetupAttachment(Body);

	Water->SetRelativeLocation(FVector(0.0f, 0.0f, 135.0f)); // 워터 스테이틱 매쉬 높이를 조절
	Light->SetRelativeLocation(FVector(0.0f, 0.0f, 195.0f));
	Splash->SetRelativeLocation(FVector(0.0f, 0.0f, 195.0f));

	// 코드로 StaticMesh 넣기
	static ConstructorHelpers::FObjectFinder<UStaticMesh>SM_Body(TEXT("/Game/InfinityBladeGrassLands/Environments/Plains/Env_Plains_Ruins/StaticMesh/SM_Plains_Castle_Fountain_01.SM_Plains_Castle_Fountain_01"));
	if (SM_Body.Succeeded())
	{
		Body->SetStaticMesh(SM_Body.Object);
	}

	static ConstructorHelpers::FObjectFinder<UStaticMesh>SM_Water(TEXT("/Game/InfinityBladeGrassLands/Effects/FX_Meshes/Env/SM_Plains_Fountain_02.SM_Plains_Fountain_02"));
	if (SM_Water.Succeeded())
	{
		Water->SetStaticMesh(SM_Water.Object);
	}
	
	static ConstructorHelpers::FObjectFinder<UParticleSystem>SM_Splash(TEXT("/Game/InfinityBladeGrassLands/Effects/FX_Ambient/Water/P_Water_Fountain_Splash_Base_01.P_Water_Fountain_Splash_Base_01"));
	if (SM_Splash.Succeeded())
	{
		Splash->SetTemplate(SM_Splash.Object);
	}
	
}

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

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

}
fountain.h

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

#pragma once

//#include "CoreMinimal.h"
#include "EngineMinimal.h"
/*
#include "CoreMinimal.h" - 최소한의 기능만 있다.
#include "EngineMinimal.h" - 다양한 기능이 있다.
*/
#include "GameFramework/Actor.h"
#include "Fountain.generated.h"

UCLASS() // 밑에 클래스가 언리얼에 연동되도록 하려면 UCLASS()를 사용하여야한다.
class ARENABATTLE_API AFountain : public AActor // 앞에A가 붙은 것은 Actor라는 의미다.
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AFountain();

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

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;
	UPROPERTY(VisibleAnywhere) // 선언한 객체의 메모리를 자동으로 관리하기 위함 , C#의 가비지컬렉터와 같다.
	UStaticMeshComponent* Body;
	UPROPERTY(VisibleAnywhere) // VisibleAnywhere는 인스펙터의 StaticMesh를 보여준다. 보여줄 수만 있고 수정은 안된다.
	UStaticMeshComponent* Water;
	UPROPERTY(VisibleAnywhere)
	UPointLightComponent* Light;
	UPROPERTY(VisibleAnywhere)
	UParticleSystemComponent* Splash;
	UPROPERTY(EditAnywhere, Category = ID) // 편집도 가능하게 변경할 수 있다.
	int32 ID;

};

8. Static Mesh 설정

 

 

Generate Visual Studio project files 뜨게 하기

아래와 같이 따라한다.

 1. C:\Program Files(x86)\Epic Games\Launcher

 2. Engine\Binaries\Win64 로 이동 후, UnrealVersionSelector 복사

 3. C:\Program File\Epic Games\UE4_버전명

 4. Engine\Binaries\Win64 로 이동 후, UE4Editor.exe 파일이 있는 곳에 UnrealVersionSelector를 붙여 넣는다.

 5. UnrealVersionSelector를 더블클릭하고 모두 '예'를 누른다.

 

○ Check 어셜션, ensure

에러나 경로명이 잘못 되었을경우 프로그램(게임, 언리얼엔진)을 종료해버리는데, 경고만 출력하게 해준다.

디버깅을 위한 편집기 기호 '체크'

'언리얼엔진' 카테고리의 다른 글

2023.03.04 언리얼엔진  (0) 2023.03.04
언리얼 엔진 2023.02.25  (0) 2023.02.25
2023.02.18 언리얼엔진  (0) 2023.02.18
2023.02.11 언리얼엔진  (0) 2023.02.11
2023.02.04 언리얼엔진  (0) 2023.02.04

관련글 더보기

댓글 영역