List Inventory

Updated May 25, 2026

Read the Inventory documentation first. List Inventory uses the same containers, item data, events, and core inventory functions as the base system. This page only covers the list-view presentation and sorting behavior.

For shared setup guidance, see the Migration Guide and Integration Guide. Use the System Atlas to look up functions, variables, events, components, and ownership references. Use this page for list-view UI and sorting behavior.

Related setup: Set Up Inventory for the Player, Change Inventory Type on Interact Locations.

Related Videos

Version note: Some videos may have been recorded before V4. Concepts still apply, but asset names, component names, and folder locations may differ. Treat this written documentation as the source of truth.

  • Add Jigsaw or List-Based Inventories to your Unreal Project
    Play

Overview

List Inventory is an alternative UI for the same BP_Inventory_Container data. Instead of displaying items in a slot grid, it renders them in a scrollable list that can be sorted and compactly scanned.

What's Different from Base Inventory screenshot

List inventory changesBase inventory behavior that stays the same
  • Vertical list presentation.
  • Sorting by category, name, weight, value, quantity, or custom properties.
  • No spatial slot positioning in the UI.
  • Compact rows can show more metadata at once.
  • Same BP_Inventory_Container.
  • Same item structs and container functions.
  • Same events, including OnInventorySlotUpdated.
  • Same add, remove, transfer, drag-and-drop, and context-menu actions.
  • The same container can be shown as grid or list view.

Sorting

Sorting is the main advantage of list-based inventory. Common sort options include:

  • Category: Groups items by Gameplay Tag category, such as Weapons, Consumables, or Resources.
  • Name: Alphabetical order.
  • Weight: Lightest to heaviest, or reversed.
  • Value: Cheapest to most expensive, or reversed.
  • Quantity: Stack size.
  • Recently Added: Newest items first.

Sort Options screenshot
Sort Options screenshot
Sort Options screenshot

Most sort options should support ascending and descending order. The UI should show the active sort and direction with a highlighted button, checkmark, arrow, or similar indicator.

Custom Sort Functions

Custom sort functions can compare any item property exposed through the item struct or related data. Examples include weapon damage, armor rating, rarity, durability, or game-specific stats.

  1. Get all items from the container with GetAllItems.
  2. Read the property you want to sort by from each item.
  3. Compare values and sort the array.
  4. Regenerate the list display from the sorted array.
  5. Optionally support ascending and descending direction with a boolean or enum.

Example: SortByDamage gets all items, reads each item’s damage value, compares those values, then returns the sorted array.

How to Add Custom Sort Options screenshot

List UI Structure

The list UI binds to the same container as the grid UI. The difference is the widget structure and how items are rendered.

  • Container panel: Main inventory window.
  • Sort controls: Buttons for available sort modes.
  • Scroll Box: Holds generated list item widgets.
  • List item widget: One row per inventory item.
  • Footer: Optional totals such as weight, value, and item count.

A list item widget typically shows the item icon, name, quantity, stack size, weight, value, and optional quick action buttons.

List Generation

  1. Get the container reference.
  2. Call GetAllItems.
  3. Apply the active sort function.
  4. Clear existing row widgets.
  5. Create one list item widget per sorted item.
  6. Populate each row with item data.
  7. Add each row to the Scroll Box.

When the container fires OnInventorySlotUpdated, the list UI should regenerate using the current sort. Preserve scroll position if that matters for the UX.

Set Up List View UI

  1. Create a widget Blueprint for the list inventory, or use the provided list widget template.
  2. Add a Scroll Box for item rows.
  3. Add sort buttons for the supported sort options.
  4. Add footer elements for totals if needed.
  5. Create a row widget with icon, text fields, and optional buttons or hover states.
  6. When opening the inventory, get the container reference from AC_Inventory.
  7. Pass the container reference into the list widget.
  8. Bind to OnInventorySlotUpdated.
  9. Generate the initial list.
  10. Test item updates, sorting, use/drop/transfer actions, and performance with many items.

To toggle between grid and list views, destroy the current UI, create the other view, and bind it to the same container reference. The container state persists across view changes.