Files
loneseDocument/Content/Blueprints/WBP_InventoryView.md
meishibiezb 29a3f77908 init
2026-06-04 21:44:13 +08:00

50 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WBP_InventoryView
## 基本信息
- **类型**: Widget Blueprint (UserWidget)
- **父类**: UserWidget
- **源文件**: /Game/Blueprints/UI/Item/WBP_InventoryView.WBP_InventoryView
- **模块**: Content
## 功能概述
WBP_InventoryView 是物品列表显示 Widget持有 BP_InventoryComp 组件的引用,负责将库存中的物品视图列表渲染到 UI。通过 UpdateListItems 函数刷新列表显示,使用 WBP_ItemViewBox 作为单个物品视图框的子 Widget。
## 设计用意
WBP_InventoryView 是物品系统和 UI 系统之间的桥梁。它通过 Comp 变量引用 BP_InventoryComp从中读取 ViewCache 获取物品视图数据,然后渲染到 UI 列表。通过监听 Comp 的 OnViewChanged 委托它能在库存变化时自动刷新显示无需手动触发更新。这种设计将数据层BP_InventoryComp和显示层WBP_InventoryView完全解耦。
## 职责范围
WBP_InventoryView 负责显示物品列表 UI、监听库存变化并自动刷新、以及提供物品交互的入口。物品数据管理由 BP_InventoryComp 负责,物品存储由 UDefaultContainer 负责。
## 项目内依赖
| 依赖项 | 关系 | 源文件 |
|--------|------|--------|
| BP_InventoryComp | 引用 (Comp) | /Game/Blueprints/Playground/BP_InventoryComp |
| FItemView | 显示数据 | Item 插件 |
| WBP_ItemViewBox | 子 Widget | /Game/Blueprints/UI/Item/WBP_ItemViewBox |
## 对外接口
- **蓝图函数**
- `UpdateListItems()` -- 刷新物品列表显示,从 `Comp` (BP_InventoryComp) 的 ViewCache 读取 FItemView 数据并更新 UI 列表
- **蓝图变量**(均为 is_instance_editable
- `Bo` (bool) -- 布尔标志位,用于控制 UI 显示/隐藏或其他状态
- `Comp` (BP_InventoryComp_C*) -- 目标库存组件引用,指向要显示的 BP_InventoryComp 实例。UI 从此组件的 ViewCache 读取物品数据
- **通过 Comp 变量访问的 BP_InventoryComp 接口**
- `ViewCache` (TArray<FItemView>) -- 物品视图缓存,包含 ItemID、ItemType、ItemName、ItemDescription、Icon、ItemDataText
- `OnViewChanged` (动态多播委托) -- 绑定此委托实现库存变化时自动调用 UpdateListItems
- `CreateItemInternal` -- 可用于触发物品创建(通常不直接从此 Widget 调用)
- **EventGraph**:含 5 个事件和 8 个节点
## 使用方法
- 作为 UMG UserWidget被 BP_Hud 的 `InvView` 变量引用(类型为 WBP_InventoryView_C*
- 设置 `Comp` 变量指向目标 Actor 上的 BP_InventoryComp 实例,建立 UI 到数据的绑定
- 在 EventGraph 中绑定 `Comp.OnViewChanged` 委托,每次库存变化时自动调用 `UpdateListItems` 刷新列表
- `UpdateListItems``Comp.ViewCache` 读取 FItemView 数组,遍历创建 WBP_ItemViewBox 子 Widget 填充列表
- WBP_ItemViewBox 作为单个物品的视图框,显示物品图标、名称、描述等信息
- `Bo` 布尔变量用于控制 ListView 的条件显示(如空库存时隐藏列表)
- 物品系统的数据流向UDefaultContainer (存储) -> BP_InventoryComp (管理+ViewCache) -> WBP_InventoryView (显示)
## 用例
- BP_Hud 的 `InvView` 变量引用,作为物品栏 UI 界面
- 通过 `Comp` 变量绑定 BP_InventoryComp显示玩家或掉落物的物品列表
- 使用 WBP_ItemViewBox 作为子 Widget 渲染单个物品视图