Smart Inventory System
Inventory and equipment that drops into a project you have already built. Layered C# core, zero-allocation drag and drop, and saves that survive renaming your assets.
by RealCut
Price History +
Most inventory assets ask you to build your game their way. This one is
designed to disappear into a project that already exists.
The logic layer is plain C# that cannot reference UnityEngine at all — that
is an assembly setting, not a promise. Above it sit thin MonoBehaviour
adapters, a uGUI layer you can replace outright, and a persistence layer
that hands you a serializable snapshot and gets out of the way. Your save
system stays yours. Your UI stays yours.
What that buys you in practice:
• Items resolve by id at runtime, so renaming, moving or re-importing a
ScriptableObject never invalidates a save file.
• Any rule you can think of — weight, category, quest state, player level —
is a one-method interface that returns a reason string you can show the
player. Weight and category rules ship as working examples.
• Equipment is not a second system. It is an ordinary container carrying
per-slot restrictions, so it inherits events, saving, grid rendering,
drag and drop and tooltips without a line of equipment-specific UI code.
• The drop highlight is produced by the same calculation that performs the
drop, so a green slot is never followed by a refusal.
Measured on a 2019 i5 laptop, every gameplay operation — add, remove, move,
transfer, drop preview — runs in well under a microsecond and allocates
zero bytes, so dragging items around cannot contribute to a GC spike. A
full 200-slot inventory serialises to 8.5 KB.
Open the included demo scene and press Play. There is nothing to configure
first.
Deliberately not in this version: crafting, vendors, loot tables,
durability, hotbar widgets and gamepad navigation. The architecture leaves
hooks for all of them and none is half-present in the package.
Requires TextMeshPro Essential Resources
(Window > TextMeshPro > Import TMP Essential Resources).