This is a Unity-based 2D project that features a fully functional Inventory and Shop System. The system supports:
- Item gathering with increasing rarity
- Buying and selling via drag-and-drop with confirmation popups
- Weight management and gold currency
- UI-based interactivity with clean transitions and feedback
- Modular and extensible architecture
- Inventory panel with slot-based item handling
- Shop panel for transactions
- Confirmation & quantity selection UI
- Tooltip system
- Gold and weight system
- Raycast blocker for modal behavior
- Toast and popup messages
- Sound and BGM system
| Pattern/Principle | Usage Location |
|---|---|
| Singleton | SoundManager for global sound access |
| Observer | UI event subscriptions (e.g. OnHide, OnConfirmPopup) |
| ScriptableObject | ItemData for flexible item definition |
| Separation of Concerns | UIManager, ShopController, InventoryManager handle distinct responsibilities |
| Event-Driven Design | Popup confirmations and transaction callbacks |
| Dependency Injection (Manual) | UI references injected via Inspector instead of hard references |
| Open/Closed Principle | Systems like ItemData, TooltipUI are extensible |
| DRY Principle | Shared methods for UI blocking, messaging, popup control |
- Clone this repo.
- Open in Unity 2022.3 or later.
- Open
Scenes/Main.unity. - Press Play and interact with the UI.

