[ UE5 / C++] ๐Ÿ—ƒ๏ธ ๊ตฌ์กฐ์ฒด ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

Singery00ยท2024๋…„ 7์›” 17์ผ
0

UE5 C++

๋ชฉ๋ก ๋ณด๊ธฐ
18/20
post-thumbnail

๊ฐœ์š”

๐Ÿ—ƒ๏ธ C++๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด๋ณด์ž.

C++๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด์–ด์„œ C++๋กœ ๋งŒ๋“  ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํฌ๋Ÿผ


๋ณธ๋ก 


๐Ÿ—ƒ๏ธ Multi Output


C++ ํŒŒ์ผ ์ƒ์„ฑ

C++๋กœ ๊ตฌ์กฐ์ฒด ํŒŒ์ผ์€ ์–ธ๋ฆฌ์–ผ ์—๋””ํ„ฐ์—์„œ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
VS์—์„œ ์ง์ ‘ ํ—ค๋” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ, ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ์ƒ์„ฑ ์‹œ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์•„๋ž˜๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Intermediate > ProjectFiles

์ด ๊ฒฝ๋กœ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด ์—๋””ํ„ฐ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ํŒŒ์ผ์„ Source > ํ”„๋กœ์ ํŠธ๋ช… > public๋กœ ์ด๋™์‹œ์ผœ์ฃผ์„ธ์š”.

์šฐ์„  ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
public ์šฐํด๋ฆญ - ์ถ”๊ฐ€ - ์ƒˆ ํ•ญ๋ชฉ์„ ๋ˆŒ๋Ÿฌ ์ฃผ์„ธ์š”.

ํ—ค๋” ํŒŒ์ผ ์„ ํƒ - ์ด๋ฆ„ ์„ค์ • - ๊ฒฝ๋กœ ์„ค์ •๊นŒ์ง€ ํ•˜๊ณ  ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

๊ตฌ์กฐ์ฒด ์ƒ์„ฑ

ํ•˜๋‚˜์”ฉ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  1. ์–ธ๋ฆฌ์–ผ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ด ๋“ค์–ด ์žˆ๋Š” CoreMinimal.h๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒŒ์ผ๋ช….generated.h๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
#pragma once

#include "CoreMinimal.h"
#include "MyStructure.generated.h"

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์— UCLASS๋Œ€์‹ ์— USTRUCT๋ฅผ ๋„ฃ์–ด์„œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ด์–ด์„œ struct FํŒŒ์ผ๋ช…์œผ๋กœ ๊ตฌ์กฐ์ฒด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐ์ฒด๋ช…์— F๋Š” ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค!

์ด๋•Œ ์ผ๋ฐ˜ ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ GENERATED_BODY()๊ฐ€ ์‚ฌ์šฉ๋˜์ง€๋งŒ
๊ตฌ์กฐ์ฒด์˜ ๊ฒฝ์šฐ GENERATED_USTRUCT_BODY()๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

USTRUCT(BlueprintType)
struct FMyStructure
{
public:
	GENERATED_USTRUCT_BODY()

};

๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ ํด๋ž˜์Šค์™€ ๋™์ผํ•˜๊ฒŒ UPROPERTY()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”.

#pragma once

#include "CoreMinimal.h"
#include "MyStructure.generated.h"

USTRUCT()
struct FMyStructure
{
public:
	GENERATED_USTRUCT_BODY()


public:
	UPROPERTY()
	bool fTestBool;

	UPROPERTY()
	float fTestFloat;

};

์ด์ œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ MyStructure.h๋ฅผ ํ—ค๋”์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด๋‹น ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋ฃจํ”„๋ฆฐํŠธ์—์„œ ์‚ฌ์šฉ

USTRUCT์•ˆ์— BlueprintType์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  UPROPERTY()๋„ ์ธ์ž๋ฅผ ๋„ฃ์–ด ์ฃผ๋ฉด ๋˜๊ฒ ์ฃ .

	USTRUCT(BlueprintType)

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool TestBool;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float TestFloat;

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œํ•ด์ฃผ๋ฉด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ์—์„œ๋„ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋ณ€์ˆ˜๋ช…์œผ๋กœ ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์ฃ .

๋””ํดํŠธ๊ฐ’ ์„ค์ •

๋ณ€์ˆ˜๊ฐ’์— ์ง์ ‘ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜,

public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool TestBool = false;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float TestFloat = 10.0f;

๋˜๋Š” ์ƒ์„ฑ์ž๋กœ ๊ฐ ์ธ์ž๊ฐ’์˜ ๋””ํดํŠธ๊ฐ’์„ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

	FMyStructure()
		: TestBool(true)
		, TestFloat(10.0f)
	{};
    

๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ

์•„์ง๊นŒ์ง„ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— ๊ฒ€์ƒ‰ํ•ด๋„ ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

DataTable.h ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ ,

#include "Engine/DataTable.h"

FTableRowBase๋ฅผ ์ƒ์†์‹œ์ผœ์ฃผ๋ฉด ๋์ž…๋‹ˆ๋‹ค.

struct FMyStructure :public FTableRowBase

๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด ์šฐ๋ฆฌ์˜ ๊ตฌ์กฐ์ฒด๋กœ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑํ•ด๋ณด๊ณ  ๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋ณ€์ˆ˜๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ„ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์—ฌ๊ธฐ๊นŒ์ง€ C++๋กœ ์ƒ์„ฑํ•œ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด์˜€์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

0๊ฐœ์˜ ๋Œ“๊ธ€