
Download and install Godot 3 from the official site, extract the zip, create a new project named Godot inventory ui, and import assets into an assets folder.
Explore the basics of the Godot editor interface—the project manager, asset library, scene tree, file system, and inspector—and use the toolbar and shortcuts to switch views and test projects.
Explore practical Godot editor customization by adjusting theme highlights, hiding the console window, and tuning the text editor with type hints, font sizes, and color themes for better visibility.
Use reusable scenes in Godot, each a tree of nodes, to build characters, user interface, grids, and levels. Nest scenes within scenes, drag them around, and edit their properties.
Master Godot's control nodes to handle different resolutions with anchors, margins, and layout presets, positioning elements relative to their parent or the viewport.
Design a static inventory interface in Godot by building the middle region and a two-column UI, with left inventory and categories and right item info.
Create and save the UI inventory scene in Godot, set 1280x720 resolution, apply a full-rect layout centered with margins, and add a semi-transparent color background to prepare the inventory UI.
Learn how to position and distribute inventory items in Godot using container nodes. Leverage grid container, horizontal box, and vertical box layouts to automate sizing and alignment as window resizes.
Place an HBoxContainer to split the inventory into two columns, set it to full rect, then align to center left and adjust margins via the anchor point.
Explore how anchor points define the reference for control nodes and margins such as bottom 240, top -240, and left 40 position ui elements in Godot.
Add a pure control node for the items column and a V box with full rect sizing and a minimum width, then set up an info column with a separator.
Set up the inventory categories with a vbox and a center container, configure a centered label using a dynamic font, and create a seven-column grid for icons.
Build a reusable category button scene in Godot's UI inventory, using a texture button inside a center container, and learn about scene instancing, opacity, and local edits.
Adjust category button height to 94 pixels, fix bleeding by correcting the center container size, and switch label font to italic dynamic font data to match the final project.
Build a three-column inventory UI in Godot, with left arrow, grid container, and right arrow, using the grid container to auto-distribute items into five columns and wrap rows.
Create a reusable UI frame in Godot by building a color rect scene that serves as a shared frame for all inventory elements, with layered borders, margins, and lowered opacity.
Create a Godot inventory item button by building its UI scene, adding a frame, texture background, and center-aligned item sprite, then arrange it in a grid with padding.
Align the navigation arrows by calculating button heights and vertical padding to center them, then set sizes with a control node for grid of inventory slots and an info box.
Create the item info box in Godot's inventory UI by building the right column with a UI frame, five rows of data, vbox and hbox layouts, and styled labels.
Explore building a dynamic inventory UI in Godot by using hbox and vbox containers, adding a rich text label with bbcode formatting, and enabling content height for flexible item descriptions.
Learn to create a root-defined theme in Godot, override fonts for rich text labels, and manage dynamic font data for bold, italic, and regular styles so controls inherit visuals.
Build a dynamic inventory user interface in Godot with hbox and vbox containers, icons, and labels for attack, defense, price, and effects, item info scenes with theme overrides and separations.
Explore how to use size flags to override container-driven sizing in Godot UI, customizing the item info within a dynamic inventory system.
Learn to read Godot's docs by mousing over properties in the inspector and using the script tab search or F1 help to understand nodes, including containers, and the API details.
Build an inventory system in Godot by creating a base item slot, then duplicating and positioning slots for helmet, armor, weapon, shield, boots, globes, and arrows, with margins and anchors.
Place UI character item slots on the inventory screen, add scrolling nodes, and enable 2D stretch with an aspect type to keep UI proportional on HD and full HD.
Build a context menu for inventory items in Godot, create a vertical button list with proper sizing and theming, and apply dynamic fonts to skins before testing with F6.
Add a UI context menu container set to full rect and anchor it to center left in the inventory scene using a control node. Position it precisely later with code.
Learn how to implement a godot scroll container to scroll a multi-page item grid, using horizontal and vertical offsets, clipping, and alignment of grids inside an hbox.
Configure the scroll container and item grid scenes to enable horizontal scrolling, disable vertical scrolling, and ensure clipping so the inventory items scroll smoothly within the grid.
Customize the default theme to remove the horizontal scroll bar in Godot's UI. Learn to style the scroll bar using the theme editor, grabber, and clip content settings.
Create a full-screen inventory UI in Godot, using a texture blur shader for the background, a VBox layout with a header, inventory panel, and footer, plus a stylized title.
Build a gold counter in Godot by assembling a box container with an icon texture rect and a left-aligned numeric label, then fine-tune minimum size and anchoring for scalable values.
Build a character level progress bar in Godot’s UI inventory, applying a default theme override and styling the progress bar with a flat background, foreground color, and padding.
In the Godot UI Masterclass, implement the inventory footer and close button by configuring the footer, prompts box, texture button, and label with sizing, layout, textures, and alpha transparency notes.
Import a sample game and tilemap scene in Godot to visualize a dynamic inventory UI, map player controls, and integrate scripts to reveal the inventory.
Explore Gdscript, Godot's dynamic, indentation-based language with python-like syntax, covering variables, arrays, dictionaries, exports, and optional static typing. Learn functions, control flow, loops, and inheritance in Godot scripting.
explains event-based programming with signals in Godot, showing how signals act as callbacks, how to connect listeners, emit custom signals like item acquired, and use coroutines with yield and timers.
Learn how to build a dynamic traffic light in godot using gdscript, exploring signals, coroutines, export variables, and scene scripting to control light states and interactions.
Explore how resources function as data containers in Godot, how scenes and scripts are resources, and how nested resources load from disk to power nodes and the user interface.
Define equipment as scriptable objects by inheriting from resource and store items in a data container with properties like category, name, texture icon, defense value, price, and description.
Learn why custom resources and scriptable objects in Godot power data-driven inventories. Decouple code from data with resource files to enable easy saving, loading, and persistence of inventory changes.
Build a resource system in Godot with an entity item resource and a player resource that stores inventory, level, gold, and equipment; use the resource loader to save and load.
Duplicate the entity item custom resource and create armor, cleric hood, and one handed weapon data in folders to test inventory scrolling and prepare for defining identity player.
Create the first part of the player entity in Godot by making a resource-based EntityPlayer with an inventory as an export array of resources, then save a default player.
Create a global game state with an autoload singleton in Godot to share player data and inventory across scenes, using preload and load for resources.
Duplicate the default player resource to create a unique in-memory instance, enabling mutations while the original remains on disk, and ensure inventory items are duplicated for separate references.
Make inventory items unique by duplicating each item in the default player resource, using index-based iteration to assign new object IDs and manage texture icon references carefully.
Create a custom resource entity called item category display to group multiple item categories, assign an icon, and define a display name with an array of item category types.
Import the sample data into Godot, create and view item resources across categories, and test a dynamic, scrollable inventory by dragging items into the default player inventory.
Dynamically load item category displays by reading the data item category displays directory and retrieving file names. Load resources from path into an array for the inventory user interface.
Index the player inventory by category type with a dictionary of arrays that hold references to items, updating on load or whenever items are added or removed.
Count inventory items by category with a game state function that iterates category types, sums items from the inventory by category, and returns the total to drive category displays.
Master pagination-based scrolling in Godot UI by structuring scroll containers with expandable grids, delivering pages of 20 items (5 columns, 4 rows) and enabling jumping to specific pages.
Implement dynamic scrolling in the Godot inventory UI by populating grids with item buttons via scene instancing, using a grid template, preloaded item scenes, and a scroll container.
Learn to dynamically instantiate a grid-based inventory UI in Godot by creating and naming grid items from inventory data, attaching them to the scene tree, and filtering out invalid entries.
assigns item data to grid buttons by binding each UI inventory item to its corresponding entity item and updating the button texture to reflect the item's sprite.
Master splitting inventory items into dynamic grid pages in Godot by counting items, applying modulus to detect full pages, and instantiating new grids as pages fill.
Calculate the amount of pages by counting grid children, compute each page size from the total container width, and reset the horizontal scroll to zero for dynamic inventory paging.
Master dynamic inventory paging in Godot by implementing left-right page buttons that jump to specific pages, calculate scroll offsets, and manage dynamic items in a scroll container.
Learn to hide left and right navigation buttons on the first and last pages in Godot's inventory UI by implementing an update_navigation function and wiring it to page reloads.
Learn to animate scroll behavior in Godot’s UI by using an animation player (or tween), programmatically setting from and to values, keyframes, easing, and bidirectional scrolling for an inventory grid.
Code the scroll forward animation by wiring an animation player, calculating from and to offsets across pages, using set key value on keyframes, and controlling duration to one second.
Implement the backwards animation in the goto item page function by using current scroll page and page size to compute pages to go, with inverted keyframes.
In the Godot UI masterclass, connect the animation finished signal to update navigation, sync the current page, and reset the is scrolling flag to ensure correct left/right button visibility.
Build a dynamic inventory in Godot by splitting items into category pages, iterating category displays, and creating grids per category only when items exist, with paging and named grids.
Fix the scroll animation by deferring grid size updates to the next frame with a coroutine, flashing grid containers to refresh dynamic item grids in a categorized inventory.
Instantiate category buttons by dynamically filling the grid with category displays in defined order. The process clears and reloads categories, creating a button per category display and naming it accordingly.
Assign category icons to inventory buttons in a Godot UI masterclass by using a control-based UI inventory category script that updates the button texture via the category display texture icon.
Declare and initialize three dictionaries to map category displays to pages, UI button references, and pages to category displays, enabling precise navigation in the inventory UI.
Learn how category display buttons switch between highlighted and active states on mouse over and click, driven by the UI inventory category script and modulate color logic.
Activate dynamic inventory category displays in Godot through mouse over and click actions, and navigate with arrows, using page dictionaries to manage active highlighting.
Implement the label that shows the active category in the Godot UI inventory, updating its text to the category display name.
Align category label to the center of active icon using the button's global x position and half the button and label widths, with a timer for global coordinates during changes.
Implement a dynamic inventory category label in the Godot UI Masterclass that follows the mouse over categories and returns to the active category with a timed delay.
Implement a hover border for Godot inventory item buttons using a texture button and modulate colors on mouse enter and exit, updating the item info box.
Master referencing nodes to populate the info box in Godot by mapping item properties—attack, defense, price, effects, traits, and description—from an entity item to on mouse over details.
Join the Godot UI masterclass to assign item properties to the info box, displaying name, type, attack, defense, price, and description while showing or hiding UI nodes at startup.
Open UI inventory scene, paste the item info node path into the script, then create show item info(item) to set the item and show the info box on mouse enter.
Learn to implement interactive inventory item buttons in Godot using AnimationPlayer to highlight active items with a color rect, display context menus, and manage equip/unequip states.
Learn to implement dynamic item button highlighting in Godot by wiring mouse press signals, binding inventory items, and using highlight and deselect logic while handling scroll to avoid false triggers.
show how to display and hide the item context menu in a Godot inventory, wire the cancel button, and center the menu on the middle item from the inventory.
Define a data model in the entity player that maps item category types to equipped slots and properties, and implement Gdscript functions to access equipped items by category type.
Create base functions to equip and unequip items and to check if an item is equipped, updating player data and ensuring items in the same slot are managed.
Create two custom signals, item equipped and item unequipped, and autoload the events script as a singleton to emit them from the player and game state.
Preload normal and equipped textures, then connect the item equipped and item unequipped signals so the inventory button background turns blue when equipped and gray otherwise.
Bind the item to the context menu by storing the triggering button, updating the context menu item, and toggling the equip button text based on whether the item is equipped.
Equip and unequip items using the context menu by wiring the equip button to the preset signal, updating ui inventory item states and closing the menu.
Equip and unequip items in Godot's inventory UI by linking slots to item category types, handling equip and unequip signals, and updating slot textures accordingly.
Fix the unequip slot callback to return the slot to its normal state when items are unequipped, ensuring the slot background resets and textures update correctly.
Equip and unequip items, showing the equipped item icon in each slot by swapping placeholders with equipped textures, and sync all slots via dynamic properties and signals.
Implement automatic unequip when equipping a two-handed weapon to also unequip the offhand shield, and vice versa. Verify by testing with bows, shields, and various item categories.
Learn to acquire new items in a Godot inventory system by emitting an item acquired signal, duplicating items for unique instances, and updating the player's inventory via append to inventory.
Connect to the item acquired signal and call the reload function to refresh categories, items, and the inventory UI whenever a new item is added.
Add sample pickup items to the inventory and test by opening and closing the inventory to see them appear. Bind an input action to a key to toggle inventory visibility.
Implement a simple game state system in TypeScript to pause gameplay when the inventory opens, toggling between active and inventory states and syncing input with UI visibility.
Create a simple pickup item in Godot to test acquiring items and dynamically adding them to the inventory using a collectible item tile with sprite, collision shape, and atlas texture.
In this game development course with 98 byte sized videos, with a total of 10 hours of video content, you'll learn how to use the Godot Engine and Editor to create an Inventory System and Inventory UI (User Interface) that is fully dynamic, with scriptable object items and a central database of items (using Godot's Resources). The inventory system has support for multiple item categories, category groups, dynamic scrolling animations, equippable slots (example: main hand and off hand) and more.
The inventory system you are going to create is inspired by the Zelda Breath of the Wild inventory screen, and can be used in RPG, FPS, Adventure, Point-and-Click games and more, basically, any games where the player can acquire and keep track of items in different categories.
This is a MASTERCLASS about creating User Interfaces, Custom Systems, Custom Dynamic Data and Dynamic Interfaces with Godot. Not only data, it's a masterclass about Godot's Resource system.
This course gives you all the knowledge and the power to build responsive user interfaces with Godot, you will also learn how to make Dynamic Systems that use Dynamic Data using your own Data Model and Scriptable Objects.
You are also going to learn how to create your own extendable and expandable Godot's Game Objects and Components with custom Nodes, Scenes and Scripts. You are going to learn how to create custom Godot's Resources and how to mix and match Dynamic and Static data.
ATTENTION! THIS IS A GODOT 3.5+ COURSE, IT'S NOT A GODOT 4 COURSE! Use Godot 4 at your own risk. In any case, the working, migrated Godot 4 source-code of the inventory system created in this course is also available and attached to the course, in case you want to compare and follow along [at your own risk] using Godot 4.
In a single paragraph:
You are going to learn EVERYTHING there is about creating complex User Interfaces with Godot, from scratch, as well as coding and adding behavior to those interfaces, creating truly dynamic UI screens and components.
(Almost) everything that you are going to learn:
Godot Nodes and Scenes fundamentals. Understand what are Godot's Game Objects and Components in depth.
Godot Control Nodes and UI fundamentals including margins, anchors, layouts, responsive layouts, aspect ratios and more
How to understand Godot's Container Nodes, Automatic UI Placement and Size Flags
How to create Big User Interface Screens with Godot that are also responsive for different screen sizes and aspect ratios.
How to create your own custom UI widgets, expand and inherit them (custom Control Nodes and Scenes)
How to create an infinite scrolling container and grids of items, how to split it by pages and how to animate it dynamically
How to structure the Data Model of an inventory and equipment system, separating items by categories and creating groups of categories, for example, listing One Handed Weapons and Two Handed Weapons under a Weapons group, while keeping the One and Two Handed classifications
How to have and list multiple pages of items under the same category
How to create User Interface that uses both Dynamic and Static data
How to create Equippable Item slots that accept configurable categories of items and show the items equipped in these slots
How to display item and equipment attributes
How to create and expand custom Scriptable Objects (Custom Godot's Resources) with different attributes for items and equipment
Godot's scripting language, GDScript, including the Observer pattern with GDScript's Signals in details, with a sample Traffic Light project
How to write custom GDScript Signals, connect to them and emit them
Advanced user interface coding with GDScript
How to handle and sync One Handed and Two Handed items, while automatically unequipping items if both hands are equipped
How to create pickable items, dynamically add them to the inventory and list them in the inventory screen, in the correct category
And more!
Course Structure
This course is divided as:
98 byte sized videos, 10 hours in total
Godot fundamentals
Creating the user interface with the Godot Editor
Planning the inventory system data model
GDScript Crash Course
Programming everything with GDScript
In the programming section, I explain the reasoning behind each line of code, so expect lots of drawings.
Godot Version
This course uses Godot 3.4.3. Since Godot 4 builds upon the fundamentals of Godot 3, this course is long lasting, you are not going to get something that will get deprecated. All of the knowledge is transferable, especially on how to build UIs and structure the data models.
Godot 4 is still too unstable and susceptible for breaking changes. When Godot 4 stable release comes out, I'll record upgrade and migration videos, this way you are going to learn twice as much.
Target Audience
This course is intended for all audiences, the only requirement is to know a bit of programming logic. You don't need to know Godot before starting this course.
Trailer music from ZapSplat