UCLASS
UCLASS 정의
UCLASS : 스마트 포인터 규칙에 따라 UE4의 스마트 포인터 및 할당과 해제를 위한 메모리 관리 루틴을 사용하고 UE4 에디터에서 로드되고 읽을 수 있으며 블루프린트에서 마음대로 접근할 수 있다.
UCLASS 생성
1. 파일 -> 새로운 C++ 클래스... 선택
2. 파생되고 싶은 클래스를 선택하여 다음을 선택
2-1. 모든 클래스 표시 선택
2-2. Object 부모 클래스 선택 (UObject는 UE4 계층 구조의 최상위이다.)
3. 이름과 저장하고 싶은 경로를 결정하여 클래스 생성 선택
※ 이름.generated.h 를 #include 해야만 컴파일 할 수 있으며 UPROPERTY, UFUNCTION, UCLASS 같은 UE4 매크로가 사용된 결과를 만들 수 있다.
UCLASS 특징
Blueprintable : UE4 에디터 상 Class Viewer에서 블루프린트를 만들 수 있다.
BlueprintType : 이 키워드를 사용한 UCLASS를 다른 블루프린트에서 변수로 사용할 수 있다.
UPROPERTY
UPROPERTY 정의
UPROPERTY : UCLASS에서 사용하는 변수 문법이다.
UPROPERTY () 매크로에 전달된 매개변수
EditAnywhere : 블루프린트에서 직접 편집하거나 게임 레벨에 배치된 UCLASS 객체의 각 인스턴스를 편집할 수 있다.
EditDefaultsOnly : 블루프린트 값은 편집 가능하나 인스턴스마다는 불가능하다.
EditInstanceOnly : 기본 블루프린트에서는 안 되지만 게임 레벨에서 UClass 객체 인스턴스의 URPOPERTY() 매크로에 대해 수정할 수 있다.
BlueprintReadWrite : 블루프린트 다이어그램에서 읽기 쓰기가 가능한 속성을 말한다. 이 UPROPERTY()는 퍼블릭 멤버 변수에 대해서만 BlueprintReadWrite를 지정해야 한다.
BlueprintReadOnly : C++에서 설정돼야 하고 블루프린트에서 변경할 수 없다.(읽기만 가능하다.)
Category : 항상 UPROPERTY()는 카테고리를 명시해야 한다. 이 카테고리는 속성 에디터에서 UPROEPRTY()가 나타날 하위 메뉴를 보여준다.
// 클래스 이름.h
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "UserProfile.generated.h"
UCLASS()
class CPP_PRACTICE_API UUserProfile : public UObject
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Stats)
float Armor;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Stats)
float HpMax;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Stats)
FString Name;
};
USTRUCT
USTRUCT 정의
USTRUCT : UE4에서 사용하는 구조체이다. 이를 사용하면 다른 어떤 UObject에서 파생된 블루프린트화된 클래스에 포함되고 지정된 동일 구조체 안에 텍스처, 색상 등을 그룹화할 수 있다.
UENUM
USTRUCT 정의
UENUM : UE4에서 사용하는 사용자 정의 열거형이다. 이 열거형을 사용하면 블루프린트에서 편집 가능한 드롭다운 메뉴를 만들 수 있다.
UFUNCTION
UFUNCTION 정의
UFUNCTION : C++ 클라이언트 코드와 블루프린트 다이어그램 모두에서 호출할 수 있는 C++함수이다.
// 클래스 이름.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor_chapter02.generated.h"
UCLASS()
class CPP_PRACTICE_API AMyActor_chapter02 : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor_chapter02();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UFUNCTION(BlueprintCallable, Category = Properties)
FString ToString();
};
USTRUCT(Atomic, BlueprintType)
struct FCustomStruct
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FString Texture;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 color;
};
UENUM(BlueprintType)
enum class EFruit : uint8
{
Stopped UMETA(DisplayName = "Stopped"),
Moving UMETA(DisplayName = "Moving"),
Attacking UMETA(DisplayName = "Attacking"),
};
⊙ 언리얼 버전 : 4.26
'언리얼엔진' 카테고리의 다른 글
언리얼 엔진 5 C++ (1인칭 시점 카메라 및 입력을 통한 캐릭터 움직임) (0) | 2023.01.29 |
---|---|
언리얼 엔진 4 C++ (TSharedPtr, TWeakPtr, TUniquePtr) (0) | 2023.01.26 |
[게임 제작을 위한 시작해요 언리얼] 3주차 블루프린트를 활용한 움직이는 장치 제작 (0) | 2022.08.31 |
[게임 제작을 위한 시작해요 언리얼] 1주차, 2주차 정리 (0) | 2022.08.18 |
언리얼 엔진 4,5 C++ (디버깅 로그 출력, 캐릭터 카메라 설치) (0) | 2022.08.16 |