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
'🅿🆁🅾🅶🆁🅰🅼🅼🅸🅽🅶 > Uɴʀᴇᴀʟ [C++]' 카테고리의 다른 글
[UnrealEngine] C++_06_Debuging을 위한 코드. Log (0) | 2022.05.11 |
---|---|
[UnrealEngine] C++_04_Meshes_Cone, Sphere (0) | 2022.04.30 |
[UnrealEngine] C++_03_ material, Kismet 사용 (0) | 2022.04.29 |