[UE] Properties
목차
Properties
Properties
https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/
log 찍기
https://wergia.tistory.com/122
BP_C01_Property
C01_Property.h
더보기
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C01_Property.generated.h"
UCLASS()
class U2212_03_API AC01_Property : public AActor
{
GENERATED_BODY()
private:
UPROPERTY(EditAnywhere)
int A = 10;
UPROPERTY(EditDefaultsOnly)
int B;
UPROPERTY(EditInstanceOnly)
int C;
UPROPERTY(VisibleAnywhere, Category = "Property")
float D;
protected:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Property")
int Variable = 10;
public:
AC01_Property();
protected:
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
};
EditAnyWhere | 이 프로퍼티는 Archetypes이나 Instance 양쪽의 프로퍼티 창에서 편집할 수 있습니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다. |
EditDefualtsOnly | 이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, Archetypes 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다. |
EditInstanceOnly | 이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, Archetypes 아닌 Instance 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다. |
출처: 언리얼 공식문서 https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/Specifiers/.
C01_Property.cpp
더보기
#include "01_Spawn/C01_Property.h"
AC01_Property::AC01_Property()
: B(20)
{
PrimaryActorTick.bCanEverTick = true;
C = 30;
}
void AC01_Property::BeginPlay()
{
Super::BeginPlay();
FString str;
str.Append(GetActorLabel());
str.Append(" / A :");
str.Append(FString::FromInt(A));
str.Append(" / B :");
str.Append(FString::FromInt(B));
str.Append(" / C :");
str.Append(FString::FromInt(C));
GLog->Log(str);
}
void AC01_Property::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
D += DeltaTime; //게임시작부터 현재까지의 시간
}
C02_Mesh
UObject* obj = StaticLoadObject(UMaterialInstanceConstant::StaticClass(), nullptr, L"MaterialInstanceConstant'/Game/Materials/M_White_Inst.M_White_Inst'");
UMaterialInstanceConstant* material = Cast<UMaterialInstanceConstant>(obj);
UObject로부터 상속받은 모든 class들은 StaticClass()라는 함수를 가지고 있다.
C02_Mesh.h
더보기
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "C02_Mesh.generated.h"
UCLASS()
class U2212_03_API AC02_Mesh : public AActor
{
GENERATED_BODY()
private:
UPROPERTY(VisibleAnywhere)
class UStaticMeshComponent* Mesh;
public:
AC02_Mesh();
protected:
virtual void BeginPlay() override;
private:
UFUNCTION()
void SetRandomColor();
private:
class UMaterialInstanceDynamic* Material;
};
C02_Mesh.cpp
더보기
#include "01_Spawn/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;
//CHelper.h에서 만든 CreateComponent사용. 2차 포인터이기 때문에 &mesh 주소로 받는다.
CHelpers::CreateComponent<UStaticMeshComponent>(this, &Mesh, "Mesh");
//ConstructorHelpers::FObjectFinder<UStaticMesh> mesh(L"StaticMesh'/Game/Meshes/Cube.Cube'");
//if (mesh.Succeeded())
// Mesh->SetStaticMesh(mesh.Object);
UStaticMesh* mesh = nullptr;
CHelpers::GetAsset<UStaticMesh>(&mesh, "StaticMesh'/Game/Meshes/Cube.Cube'");
Mesh->SetStaticMesh(mesh);
}
void AC02_Mesh::BeginPlay()
{
Super::BeginPlay();
UMaterialInstanceConstant* material = nullptr;
CHelpers::GetAssetDynamic<UMaterialInstanceConstant>(&material, "MaterialInstanceConstant'/Game/Materials/M_White_Inst.M_White_Inst'");
Material = UMaterialInstanceDynamic::Create(material, this); //material 생성
Mesh->SetMaterial(0, Material); //mesh에 material 할당
UKismetSystemLibrary::K2_SetTimer(this, "SetRandomColor", 1, true);
}
void AC02_Mesh::SetRandomColor()
{
Material->SetVectorParameterValue("Color", FLinearColor::MakeRandomColor());
}
참고사항) 언리얼은 모든 헤더가 미리 컴파일된 헤더로 취급된다. (4.18버젼 이후 동일)
언리얼은 모든 헤더가 미리 컴파일된 헤더로 취급된다. (4.18버젼 이후 동일)
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHS;
Global.h
우리가 만든 미리 컴파일된 헤더. 앞으로 정의할 cpp에 넣어서 사용할 것이다.
Global.h
더보기
#pragma once
#include "Kismet/KismetSystemLibrary.h"
#include "Utilities/CHelpers.h"
UE2212_03
Contents | ||
01_Spawn | ||
C++ 클래스 | ||
U2212_03 Source | ||
01_Spawn | C01_Property.h .cpp C02_Mesh.h .cpp |
|
Utilities | CHelpers.h .cpp |
|
Global.h U2212_03GameModeBase |
'⭐ Unreal Engine > UE FPS TPS' 카테고리의 다른 글
[UE] Character Animation, Collsion (0) | 2023.03.08 |
---|---|
[UE] Character, GameMode (0) | 2023.03.07 |
[UE] Log 출력하기, Draw Debug 구현 (0) | 2023.03.03 |
[UE] Mesh, Log (0) | 2023.03.02 |
[UE] Unreal C++ Settings, 파일이 안 열리는 문제해결 방법, 언리얼 코드 수정과 삭제 (0) | 2023.02.27 |
댓글
이 글 공유하기
다른 글
-
[UE] Character, GameMode
[UE] Character, GameMode
2023.03.07 -
[UE] Log 출력하기, Draw Debug 구현
[UE] Log 출력하기, Draw Debug 구현
2023.03.03 -
[UE] Mesh, Log
[UE] Mesh, Log
2023.03.02 -
[UE] Unreal C++ Settings, 파일이 안 열리는 문제해결 방법, 언리얼 코드 수정과 삭제
[UE] Unreal C++ Settings, 파일이 안 열리는 문제해결 방법, 언리얼 코드 수정과 삭제
2023.02.27