Inventory - B477042/GraduationProject GitHub Wiki
Inventory์ ๊ด๋ จ๋ ์์ดํ
๋ค์ ๋ํ ๊ตฌํ ์ค๋ช
์
๋๋ค.
๊ฒ์์์ ์์ดํ
์ ์ด๋ป๊ฒ ์ ์ฅํ ์ง์ ๋ํด ๋ถ์ํ๊ณ ๊ตฌํํด๋ดค์ต๋๋ค.
์์ดํ
๊ณ ์ ์ ID๊ฐ ์์ด์ผ ๋๋ค๊ณ ์๊ฐํด์ FName Tag๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํ์ต๋๋ค.
์ด ๋ UE4์ Tag ์์คํ
์ ๋ชฐ๋ผ์ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๋ฅผ ๋ง๋ค์ด๋ฒ๋ ธ์ต๋๋ค.
๋์ค์ ์๊ฒ ๋๊ธด ํ์ง๋ง ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค.
Back to Planning & Implementation
class ESCAPEGAME_API UComponent_Inventory : public UActorComponent
{
UPROPERTY(EditAnywhere, Category = "Items")
TMap<FName, FItemDataInfo> Items;
}
USTRUCT(BlueprintType, meta = (ToolTip = "์ธ๋ฒคํ ๋ฆฌ์ ์ ์ฅ๋๋ ์์ดํ
์ ๋ํ ์ ๋ณด"))
struct FItemDataInfo
{
GENERATED_BODY()
public:
FItemDataInfo() { Item = nullptr; n_item = 0; }
private:
//Sort of this item
UPROPERTY(EditAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
TWeakObjectPtr<AItemActor> Item;
UPROPERTY(Transient, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
int n_item;
};
Inventory ๋ด๋ถ์ ์์ดํ
์ ID๋ก ์ฌ์ฉํ๋ FName Tag ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ์์ดํ
์ ๋ณด๋ฅผ Map์ ์ด์ฉํ์ฌ ์ ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์์ต๋๋ค.
- Key ๊ฐ์ ์์ดํ ์ด ์กด์ฌํ๋ฉด FItemDataInfo์ ๊ฐฏ์ ๊ฐ์ ์กฐ์ ํ๋๋ก ํ์์ต๋๋ค.
- Key ๊ฐ์ ์์ดํ ์ ๋ชจ๋ ์ฌ์ฉํ๋ค๋ฉด, TMap Items์์ ์ ์ธ ์ํค๋๋ก ํ์์ต๋๋ค.
- Key ๊ฐ์ ์์ดํ ์ด ์๋ค๋ฉด, ์๋กญ๊ฒ ์ถ๊ฐ ๋๋๋ก ํ์์ต๋๋ค.
Item์ ๋ํ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ํด๋น Item์ Weak pointer๋ก ์ ๊ทผํ์์ต๋๋ค.
class ESCAPEGAME_API AItemActor : public AActor
{
public:
//์์๋ค์์ tag๋ฅผ ๋ฐ๋์ ์ ์ํด์ค์ผ ๋๋ค.
virtual FName GetTag()PURE_VIRTUAL(AItemActor::GetTag,return TEXT("Default") ;);
protected:
//์ด ์์ดํ
์ ๊ฐ์ง๊ณ ์๋ ์ํฐ
UPROPERTY(VisibleAnywhere)
ACharacter* OwnerActor;
//์์ดํ
์ Player๊ฐ ์ฃผ์ธ ๊ฒฝ์ฐ, ์ ํจํ์ง ์๊ฒ ๋๋ค
UPROPERTY(VisibleAnywhere)
bool bIsItemVaild;
}
Item Actor๋ค์ ๋ถ๋ชจ ํด๋์ค์ด๊ธฐ์ Pure virtual์ ์ด์ฉํ์ฌ Tag์ ๋ํ ๋ถ๋ถ์ ๋ฐ๋์ ๋ง๋ค๊ฒ ํ์์ต๋๋ค.
Vaildํ์ง ์๋ ์์ดํ
์ level์์ ๋นํ์ฑํ ์์ผฐ์ต๋๋ค.
Save & Load๋ฅผ ๊ตฌํํ๊ธฐ๊ฐ ์๊ฐ๋ณด๋ค ์ด๋ ค์ ์ต๋๋ค.
FItemDataInfo์ ๊ตฌ์กฐ์ ์์ดํ
์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํด๋น ์์ดํ
์ค ํ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ด์ผ ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ์ผ ๋ ์ง ๊ณ ๋ฏผํ๋ค๊ฐ ์์ดํ
๋ง ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฉด ๋๊ธฐ์ Inventory์ ์๋ ์์ดํ
๋ชฉ๋ก์ ์ ์ฅํ์ต๋๋ค.
๊ทธ ํ, Load ํ ๋ ๋ชฉ๋ก์ ์๋ ์์ดํ
์ด๋ฉด ์คํฐ ์์ผ์ ๊ทธ ์์ดํ
์ ๊ฐ๋ฆฌํค๊ฒ ํ์ต๋๋ค.
๋นํ์ฑํ ์ํ๋ก ๋ง๋ค์ด๋๋ฉด ๊ฒ์์ ์ํฅ์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ Item Actor์์ ์์ ์ด Player์๊ฒ ์ฃผ์์ง ์ ์ด ์์ผ๋ฉด ๋นํ์ฑํ ์ํ๋ก Load๋๊ฒ ํ์ต๋๋ค.