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).