Game Develop

[UE5] 구조체 본문

UnrealEngine5/이것저것

[UE5] 구조체

MaxLevel 2023. 1. 11. 03:25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Fill out your copyright notice in the Description page of Project Settings.
 
#pragma once
 
#include "CoreMinimal.h"
#include "CustomStructs.generated.h"
 
 
class HYOBINSPROJECT_API CustomStructs
{
public:
    CustomStructs();
    ~CustomStructs();
};
 
 
USTRUCT(Atomic, BlueprintType) // Atomic : 항상 하나의 단위로 직렬화. BlueprintType : 블루프린트에서 사용될 수 있음을 의미.
struct FAttackInfoStruct
{
    GENERATED_USTRUCT_BODY()
public:
    UPROPERTY(EditAnywhere, BlueprintReadWrite) // 포인터변수의 경우, 댕글링포인터 방지하기위해 UPROPERTY 꼭 붙이기
    float damage;
};
 
cs

 

1.  6번째 라인에 있는것처럼, 클래스이름.generated.h는 필수로 선언.

2.  구조체이름 맨 첫번째에 F도 필수.

3.   USTRUCT는 당연히 필수고, 굳이 블루프린트에서 사용할일 없으면 BlueprintType 빼버리면 된다.

      UPROPERTY도 마찬가지.

 

4.  기본적으로 변수에는 UPROPERTY를 해주는게 좋고, 포인터변수일 경우 댕글링포인터 문제에서 보호받기위해 UPROPERTY 매크로를 사용하면 좋다. 대신, 언리얼 GC의 수집대상이 되기 때문에 의도치않게 객체가 파괴되어 문제가 발생할 수 있다.

 

5. 데이터테이블을 사용하고싶다면 FTableRowBase를 상속받기