๋ณ€์ˆ˜๋Š” ์•„์ดํ…œ์„ ๋ณต์ œํ•˜๊ฒŒ ๋  ๊ฒƒ์ธ๋ฐ


ํ•ด๋‹น ์•„์ดํ…œ ๋ณ€์ˆ˜๊ฐ€ ์ด RPC๋กœ๋„ ์‚ฌ์šฉ์ด ๋ ๊ฒƒ์ด๊ณ  Property Replication์œผ๋กœ๋„ ์‚ฌ์šฉ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.


์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ๋ณต์ œ๋  ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” USTRUCT๊ฐ€ ์ข‹์„๊นŒ์š”? UObject๊ฐ€ ์ข‹์„๊นŒ์š”?


์˜ˆ์‹œ :


1. ๊ตฌ์กฐ์ฒด


USTRUCT(BlueprintType)

struct FItemData : public FTableRowBase //TableRowBase ๋Š” Datatable์˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด

{

GENERATED_BODY()


UPROPERTY()

UTexture2D* ItemImage;


UPROPERTY()

FItemAttributes ItemAttribute;

...

};


์ด๋Ÿฐ์‹์œผ๋กœ ์ œ์ž‘ํ•˜๋ฉด Replication์„ ์‹œ๋„ํ•  ๋•Œ, ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์€๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.


2. UObject (UClass)


UCLASS()

class UItemData : public UObject

{

GENERATED_BODY()


UPROPERTY()

UTexture2D* ItemImage;


UPROPERTY()

FItemAttributes ItemAttribute;

}



์ด ๋‘๊ฐ€์ง€ ๋ฒ„์ „์—์„œ ์–ด๋–ค ๋ฐฉ๋ฒ•์€ ์–ด๋–ค ์žฅ์ ์ด ์žˆ๊ณ , ๋ญ๊ฐ€ ์ข‹์„์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ UObject๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋Š”๋ฐ UObject๋ฅผ Replicateํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Actor์˜ ReplicateSubObject ํ•จ์ˆ˜์˜€๋‚˜ Override ํ•ด์ฃผ๊ณ  ๋ณต์ œํ•  ๋•Œ ๋งˆ๋‹ค ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ณด๋‚ด์ค˜์•ผ ์ œ๋Œ€๋กœ ์—ฐ๋™์ด ๋˜๋”๋ผ๊ตฌ์š”.


๊ทธ๋ฆฌ๊ณ  TArray<UItemData> ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์ฃผ๋ ค๊ณ  ํ•˜๋‹ˆ๊น RPC๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ณด๋‚ด์•ผํ•˜๊ฒ ๋”๋ผ๊ตฌ์š” (ReplicateSubObject ํ•จ์ˆ˜์— ์—ฌ๋Ÿฌ๋ฒˆ ๋„ฃ์–ด์„œ...)



๊ทธ๋ž˜์„œ USTRUCT๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ•ด๋ณด๋ ค๊ณ ํ•˜๋Š”๋ฐ


๊ฐ ๊ฐ ์ž‘๋™์ด ์•ˆ๋˜๋Š”๊ฑด ์•„๋‹Œ๋ฐ ์žฅ์  / ๋‹จ์ ์ด ์žˆ์„๊นŒ์š”?
์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ์ข‹์„๊นŒ์š”?