How to create a 2D Inventory system for a point-and-click puzzle game?

Hello,

Very new to unreal engine - Does anyone have a helpful new beginners guide relevant to creating a 2D based inventory system with picking up an object etc.

I’ve had very little exposure to unreal so I don’t understand much of anything. I tried watching one created by LesserDogs on Youtube but that goes through a system of having a dedicated button for interactions.

I want mine to be based purely on 1 Mouse interaction that being left click.

Likewise my projet is about making a 2D game so any other help would be great.

Any help appreciated.

for a click based 2d inventory the structure that scales is: an array holding a struct per item (on the player controller or an inventory component), plus a widget that renders that array. clicks go to the world objects, never to the widget.

flow: get hit result under cursor on left click, cast the hit actor to your pickup blueprint, call its interact function, which adds the item struct to the inventory array and destroys the pickup. the widget then rebuilds its grid from the array, creating one entry widget per item and passing the struct in right after create widget. the click itself is the interaction, so no dedicated button, and the widget never needs references to individual pickups, it only reads the array.

if you want a working reference to read while you learn, the Hidden Object Game Template is built on exactly this pattern, a data table defines the objects, clicking actors in the scene marks them found and adds them to a list widget at the bottom of the screen, and since it is commented blueprint end to end you can trace how the pieces talk to each other and reuse the structure for your inventory: Multiplayer Hidden Object Game Template | Fab

This is super helpful, I’m in the same boat learning blueprints right now. The array of structs approach makes way more sense than what I was trying before. Gonna try building the pickup interact function next, wish me luck lol.

Adding to the struct idea above — splitting it into three small pieces made this much easier to learn when I tried something similar:

1. The data
Make a Blueprint Struct called something like S_InventoryItem with Item Name (Text), Icon (Texture 2D), Description, and a name/ID variable you can test against. Put your items in a Data Table based on that struct, so a Key, a Note and a Battery are just rows, not separate Blueprints.

2. The inventory itself
Put an Actor Component on your player character / player controller called BP_InventoryComponent. Give it an array of that struct, and three functions: Add Item, Remove Item, and Has Item? (a boolean check). Keep all the logic in there and let the widget only display what is in the array — that separation saves a lot of rewiring later.

3. Picking things up and using them — left click only
In the Player Controller, enable Show Mouse Cursor and Click Events. On left click, use Get Hit Result Under Cursor by Channel. If the hit actor implements a simple Blueprint Interface, BPI_Interactable, call Interact on it. A pickup version of that adds its Data Table row to the inventory and destroys itself. For using an item, click an inventory slot to select it, then click the object in the world — the object checks Has Item? / Selected Item ID, so a brass key only opens one specific door, and you remove the item only if the puzzle is meant to consume it.

UI tip
Build the bar as a Widget with a Horizontal Box or Uniform Grid Panel and a separate W_Slot widget (icon image, button, selected highlight). On Add Item, loop the array and refresh the slots rather than trying to update only one slot.

Start tiny: 4 slots, one pickup, and one locked door you can test in 2 minutes. Once that loop works, combining items and descriptions are just extra fields and one extra check, and debugging stays manageable because you know which of the three pieces broke.