○ C++로 언리얼엔진 해보기
Config - 게임 프로젝트의 설정 값
Content - Asset 관리
Intermediate - 프로젝트 관리에 필요한 임시 파일
Saved - 결과물
1. [파일] - [새로운 C++ 클래스 생성] - [Actor 선택] - [이름 설정하고 생성]
- 설정한 이름으로 cpp, h 파일이 생성됩니다.
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 |
댓글 영역