用途:为 Godot 项目设计背包与物品栏系统,提供按场景选择脚本的蓝图,包括 WoW 式堆叠背包、Diablo/生化危机式 Tetris 网格占位、装备、战利品表、持久化、消耗品与物品数据库查询。
主要能力与用法:物品以 Resource 建模(Item extends Resource),配合 inventory_item_resource.gd、inventory_data_resource.gd、inventory_ui_controller.gd 等脚本;添加物品采用两遍堆叠(先填未满堆叠,再占空格/网格),并做重量与容量校验,返回溢出数量,循环结束后只发一次 inventory_updated 信号。UI 绑定一次信号,复用槽位控件,仅在槽位数量增长时创建节点。存档只序列化 item_id/resource_path 与数量,由 inventory_persistence.gd 处理,不保存嵌套 Resource。
限制与禁止事项:不要用 Node 表示物品;添加前必须校验堆叠与重量;UI 不得静默修改背包数组,数据层拥有变更权;数量用 int 不用 float;批量操作不要逐物品发信号;不要硬编码物品引用,用 String/StringName id 加数据库;刷新时不要 queue_free 重建全部槽位;不要在 _process 中分配新 Resource;运行时修改共享物品蓝图前需 duplicate(true);访问空槽位 .icon 前用 is_instance_valid() 保护。
适用场景:动作 RPG 背包与装备界面、生存类重量与消耗品约束、任务收集与奖励发放、商店与经济系统、战利品掉落与宝箱。前置技能包括 godot-resource-data-patterns、godot-signal-architecture、godot-gdscript-mastery、godot-ui-containers;可与存档、RPG 属性、经济、能力、战斗、UI 主题等技能配合。具体 API 细节建议按需查阅官方文档,不要预加载全部关联技能。