평생 공부하는 빠타박스 블로그 : Learning is Happiness
article thumbnail
SMALL

Unreal Engine 4 /4.26버전으로 수업을 진행합니다. 해당 내용은 수업에 대한 내용과 함께 

개인적인 생각 및 정보를 토대로 글을 씀을 알립니다. 

본 내용에 대하여 상업적으로 이용 및 배포를 금합니다.

이전내용) https://ppatabox.tistory.com/124

 

 

 


UEC++_05.pdf
4.33MB
UEC++_05.docx
5.43MB

 

 

 

Global.h

#pragma once

#include "Kismet/KismetMathLibrary.h"
#include "Kismet/KismetSystemLibrary.h"

#include "Utilities/CHelpers.h"

 

 

03_Spawn.cpp

#include "C03_Spawn.h"
#include "Global.h"
#include "C02_Mesh.h"

AC03_Spawn::AC03_Spawn()
{

}

void AC03_Spawn::BeginPlay()
{
	Super::BeginPlay();

	for (int32 i = 0; i < 3; i++)
	{
		FTransform transform;

		FVector location = GetActorLocation();
		transform.SetLocation(FVector(location.X, location.Y + i * 250, location.Z));

		GetWorld()->SpawnActor<AC02_Mesh>(SpawnClasses[i], transform);
	}
}

 

03_Spawn.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C03_Spawn.generated.h"

UCLASS()
class U2110_03_API AC03_Spawn : public AActor
{
	GENERATED_BODY()
	
private:
	UPROPERTY(EditDefaultsOnly)
		TSubclassOf<class AC02_Mesh> SpawnClasses[3];

public:	
	AC03_Spawn();

protected:
	virtual void BeginPlay() override;
};

 

C02_Mesh.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C02_Mesh.generated.h"

UCLASS()
class U2110_03_API AC02_Mesh : public AActor
{
	GENERATED_BODY()
	
protected:
	UPROPERTY(VisibleDefaultsOnly)
		class UStaticMeshComponent* Mesh;

public:	
	AC02_Mesh();

protected:
	virtual void BeginPlay() override;

private:
	UFUNCTION()
		void SetRandomColor();

private:
	class UMaterialInstanceDynamic* Material;
};

 

C02_Mesh.cpp

#include "C02_Mesh.h"
#include "Global.h"
#include "Components/StaticMeshComponent.h"
#include "Materials/MaterialInstanceConstant.h"
#include "Materials/MaterialInstanceDynamic.h"

AC02_Mesh::AC02_Mesh()
{
	//Mesh = CreateDefaultSubobject<UStaticMeshComponent>("Mesh");
	//RootComponent = Mesh;

	CHelpers::CreateComponent<UStaticMeshComponent>(this, &Mesh, "Mesh");

	//static ConstructorHelpers::FObjectFinder<UStaticMesh> mesh(L"StaticMesh'/Game/Meshes/Cube.Cube'");
	//if(mesh.Succeeded())
	//	Mesh->SetStaticMesh(mesh.Object);


	UStaticMesh* mesh;
	CHelpers::GetAsset(&mesh, "StaticMesh'/Game/Meshes/Cube.Cube'");
	Mesh->SetStaticMesh(mesh);
}

void AC02_Mesh::BeginPlay()
{
	Super::BeginPlay();
	
	FString path = "MaterialInstanceConstant'/Game/Materials/M_Color_White.M_Color_White'";
	//UMaterialInstanceConstant* material = Cast<UMaterialInstanceConstant>(StaticLoadObject(UMaterialInstanceConstant::StaticClass(), nullptr, *path));

	UMaterialInstanceConstant* material;
	CHelpers::GetAssetDynamic<UMaterialInstanceConstant>(&material, path);

	Material = UMaterialInstanceDynamic::Create(material, this);
	Mesh->SetMaterial(0, Material);

	UKismetSystemLibrary::K2_SetTimer(this, "SetRandomColor", 1, true);
}

void AC02_Mesh::SetRandomColor()
{
	Material->SetVectorParameterValue("Color", FLinearColor::MakeRandomColor());
	Material->SetScalarParameterValue("Roughness", UKismetMathLibrary::RandomFloatInRange(0, 1));
}

 

C02_Mesh_Cone.cpp

#include "C02_Mesh_Cone.h"
#include "Global.h"

AC02_Mesh_Cone::AC02_Mesh_Cone()
{
	UStaticMesh* mesh;
	CHelpers::GetAsset(&mesh, "StaticMesh'/Game/Meshes/Cone.Cone'");
	Mesh->SetStaticMesh(mesh);
}

C02_Mesh_Cone.h

#pragma once

#include "CoreMinimal.h"
#include "01_Spawn/C02_Mesh.h"
#include "C02_Mesh_Cone.generated.h"

UCLASS()
class U2110_03_API AC02_Mesh_Cone : public AC02_Mesh
{
	GENERATED_BODY()
	
public:
	AC02_Mesh_Cone();
};

C02_Mesh_Sphere.cpp

#include "C02_Mesh_Sphere.h"
#include "Global.h"

AC02_Mesh_Sphere::AC02_Mesh_Sphere()
{
	UStaticMesh* mesh;
	CHelpers::GetAsset(&mesh, "StaticMesh'/Game/Meshes/Sphere.Sphere'");
	Mesh->SetStaticMesh(mesh);
}

 

C02_Mesh_Sphere.h

#pragma once

#include "CoreMinimal.h"
#include "01_Spawn/C02_Mesh.h"
#include "C02_Mesh_Sphere.generated.h"

UCLASS()
class U2110_03_API AC02_Mesh_Sphere : public AC02_Mesh
{
	GENERATED_BODY()
	
public:
	AC02_Mesh_Sphere();
};

 

 

728x90
728x90
LIST
profile

평생 공부하는 빠타박스 블로그 : Learning is Happiness

@공부하는 PPATABOX

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!