Inventory - osy9611/ProjectPT GitHub Wiki
ν΄λΉ λ¬Έμλ μΈλ²€ν 리 μμ€ν μ ꡬνν λ΄μ©μ΄λ€.
νμ¬ μλ² μ°λμ΄ μλ μνμμ ν΄λΌμ΄μΈνΈκ° μμμ μΌλ‘ μ²λ¦¬νκ³ μμΌλ©°, ν₯ν μλ² μΆκ° μ μμ λ ꡬ쑰λ₯Ό κ³ λ €νμ¬ μ€κ³κ° λμλ€.
μμ΄ν μ 보 λ° μ‘°μ
Item ToolTip (ν΄ν)
|
Item Divide (λλκΈ°)
|
μΈλ²€ν 리 μ λ ¬ λ° μ΄λ
Item Category (νν°λ§)
|
Item Drag&Drop, Sort (μ λ ¬ λ° μ΄λ)
|
μ£Όμ κΈ°λ₯
-
μμ΄ν
μ΄λ
- λλκ·Έ μ€ λλ‘μ ν΅ν μμ΄ν μ΄λ κΈ°λ₯ ꡬν
- μμ΄ν μ λλ κ·Ένμ¬ λ€λ₯Έ μ¬λ‘―μΌλ‘ μ΄λ κ°λ₯νλ©°, UIμ λ°μ΄ν° λκΈ°νκ° μ¦μ λ°μλ¨
-
μμ΄ν
μ λ ¬
- λ±κΈ(λ μ΄λ), μμ΄ν νμ (μλͺ¨ν, μ₯λΉ λ±), TableID κΈ°μ€μΌλ‘ μ λ ¬ κΈ°λ₯ μ 곡
-
μμ΄ν
νν°λ§
- μμ΄ν νμ μ λ°λ₯Έ νν°λ§ κΈ°λ₯ μΆκ°
- μΉ΄ν κ³ λ¦¬λ³ νν°λ§μ μ μ©νμ¬ μ¬μ©μκ° μνλ μμ΄ν μ μμ½κ² μ°Ύμ μ μλλ‘ κ΅¬ν
-
μμ΄ν
λλκΈ° λ° λ³ν¨
- μμ΄ν μ λλκ³ , μ€ν κ°λ₯ν μμ΄ν μ κ²½μ° λ³ν©ν μ μλλ‘ κ΅¬ν
- νΉμ ν€ μ λ ₯ μ μμ΄ν λλκΈ° UIλ₯Ό νμνκ³ μ¬μ©μμ μ λ ₯μ λ°μ λΆν μν
- λ³ν© μ μ€ν μ νμ κ³ λ €νμ¬ μ΅λμΉλ₯Ό μ΄κ³Όνμ§ μλλ‘ μ€κ³
-
μμ΄ν
ν΄ν
- μμ΄ν μ λ°λΌ ν΄νμ λμ μΌλ‘ μμ±νμ¬ νμ
- UMG κΈ°λ°μ ν΄ν μμ ―μ μ¬μ©νμ¬ μμ΄ν λ³ κ³ μ μ 보λ₯Ό μ€μκ°μΌλ‘ μ 곡νλ©°, λ€λ₯Έ UIμμλ νμ© κ°λ₯
μμ΄ν λ°μ΄ν° ꡬ쑰
-
μμ΄ν λ°μ΄ν°λ μλ²μ λκΈ°νλλ©°, GUID κΈ°λ°μΌλ‘ κ΄λ¦¬λμ΄ μ€λ³΅ μμ΄ν μ ꡬλ³ν μ μλλ‘ μ€κ³λ¨
-
λ°μ΄ν° ꡬ쑰
tableNo ItemName Grade ItemType BindType CanSell ItemDesc ResourcePath CanStack MaxStackCount int string int ItemType BindType bool string string bool int
UI/UX κ³ λ € μ¬ν
-
μμ΄ν
μ΄λ
- μμ΄ν μ΄λ μ μ 체 λ°μ΄ν°λ₯Ό κ°±μ νμ§ μκ³ , λ³κ²½λ λ°μ΄ν°λ§ μ λ°μ΄νΈνμ¬ μ±λ₯ μ΅μ ν
- μ¬λ‘― μ€μ λλ λ³ν© μ¬λΆλ₯Ό μλ κ°μ§νμ¬ μ μ°ν UI μ 곡
-
μμ΄ν
νν°λ§
- UIμ νν° λ²νΌμ μ¬μ©νμ¬ μνλ μΉ΄ν κ³ λ¦¬(μ₯λΉ, μλΉ, μμ΄ν λ±)λ§ νμ κ°λ₯
-
μμ΄ν
λ³ν©, λλκΈ°
- νΉμ ν€ μ λ ₯ μ μμ΄ν λλκΈ° UIλ₯Ό νμνκ³ μ¬μ©μμ μ λ ₯μ λ°μ λΆν μν
- λ³ν© μ μ€ν μ νμ κ³ λ €νμ¬ μ΅λμΉλ₯Ό μ΄κ³Όνμ§ μλλ‘ μ€κ³
-
μμ΄ν
ν΄ν
- ν΄νμ΄ νλ°μ±μ΄ μλ, μ§μμ μΌλ‘ νμ±νλκ±°λ μ μ κ° μ§μ νμΈν μ μλ κΈ°λ₯ μ 곡
- μΈλ²€ν 리λΏλ§ μλλΌ λ€λ₯Έ UIμμλ μ½κ² νμ© κ°λ₯νλλ‘ κ΅¬μ‘° μ€κ³
μλ² μ°λ λ° νμ₯μ±
-
μλ² μ°λ μ μμ΄ν
λ°μ΄ν° μμ² νλ¦
- ν΄λΌμ΄μΈνΈ μ μ μ, μλ²μμ μΈλ²€ν 리 λ°μ΄ν° μμ²
- μλ²λ νμ¬ λ³΄μ μ€μΈ μμ΄ν 리μ€νΈλ₯Ό λ°ν
- ν΄λΌμ΄μΈνΈλ λ°μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μΈλ²€ν 리 UI μ λ°μ΄νΈ
- μμ΄ν μ¬μ©/μμ /μ΄λ μ μλ²μ μμ²μ 보λ΄κ³ μλ΅μ κΈ°λ°μΌλ‘ μ΅μ’ μ²λ¦¬
-
μλ² λ°μ΄ν° κ²μ¦ λ°©μ
- ν΄λΌμ΄μΈνΈλ μλ² μλ΅μ λ°μ ν μμ΄ν μνλ₯Ό λ³κ²½νλ λ°©μ μ μ©
- μλ²μμ μμ§ κ°λ₯ κ°μ μ¬λΆ λ±μ λ°μ΄ν° κ²μ¦μ μνν ν μ΅μ’ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμ λ°μ
- λ°μ΄ν° λΆμΌμΉ λ°μ μ ν΄λΌμ΄μΈνΈκ° μλ² λ°μ΄ν°λ₯Ό κ°μ λκΈ°ννλ κΈ°λ₯μ μ 곡
- μλ²μμ κ²μ¦ ν λ³κ²½λ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμ λ°μνλ λ°©μ μ μ©
μμ΄ν λ°μ΄ν° κ°±μ
-
λ‘κ·ΈμΈ λλ μΈλ²€ν 리 λκΈ°ν μμ²μ΄ λ€μ΄μ€λ©΄ μλ² λ°μ΄ν°μ λκΈ°ν
-
μ£Όμ μ½λ
void UPTUserData_Inventory::UpdateSlotData(const TArray<FInventoryItem>& ServerInventory) { if (ServerInventory.IsEmpty()) return; InventoryData.Reset(); ItemIDToGUIDMap.Reset(); for (const FInventoryItem& InvenItem : ServerInventory) { InventoryData.Add(InvenItem.GUID, InvenItem); ItemIDToGUIDMap.FindOrAdd(InvenItem.ItemID).Add(InvenItem.GUID); } UpdateUI(); }
μμ΄ν μ΄λ λ° λ³ν©
-
λλκ·Έ μ€ λλ‘μ ν΅ν΄ μμ΄ν μ μ΄λ λλ λ³ν©ν μ μλλ‘ κ΅¬ν
-
μ£Όμμ½λ
void UPTInventoryWidget::OnCellDropped(UPTItemCell_Drag* DraggedCell, UPTItemDragOperation* DragDropOperation) { if (!DragDropOperation) return; UPTItemCell_Inventory* TargetCell = Cast<UPTItemCell_Inventory>(DraggedCell); UPTItemCell_Inventory* SelectCell = Cast<UPTItemCell_Inventory>(DragDropOperation->SourceCell); if (TargetCell == SelectCell) return; MergeOrSwapItem(SelectCell, TargetCell); }
μμ΄ν λλκΈ°
-
νΉμ κ°μλ§νΌ μμ΄ν μ λΆν νλ κΈ°λ₯ ꡬν
-
μ£Όμ μ½λ
void UPTUserData_Inventory::DivideItemData(FString ItemGUID, int32 DivideCount) { if (ItemGUID.IsEmpty() || DivideCount <= 0) return; FInventoryItem* Item = InventoryData.Find(ItemGUID); if (!Item || Item->Count < DivideCount) return; Item->Count -= DivideCount; FInventoryItem NewItem = *Item; NewItem.GUID = FGuid::NewGuid().ToString(); NewItem.Count = DivideCount; InventoryData.Add(NewItem.GUID, NewItem); UpdateUI(); }