[UE] Properties

목차
Properties
Properties
https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/
프로퍼티
게임플레이 클래스에 대한 프로퍼티 생성 및 구현 관련 레퍼런스입니다.
docs.unrealengine.com
log 찍기
https://wergia.tistory.com/122
[UE4] Programming - 로그 출력하기
로그 출력하기 작성버전 :: 4.20.3 로그는 개발중에 여러가지 피드백을 얻기 위해서 중요한 도구다. 그렇기 때문에 항상 새로운 언어, 새로운 엔진 등을 배울 때는 거기서 어떤 방식으로 로그를 출
wergia.tistory.com
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
댓글을 사용할 수 없습니다.