Files
loneseDocument/Content/Blueprints/WBP_InventoryView.md
meishibiezb a8bdf281ff update
2026-06-05 03:01:15 +08:00

67 lines
3.7 KiB
Markdown
Raw Permalink 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
## 基本信息
- **类型**: WidgetBlueprint (UserWidget)
- **父类**: UserWidget
- **源文件**: /Game/Blueprints/UI/Item/WBP_InventoryView.WBP_InventoryView
- **模块**: Content/Blueprints/UI/Item
## 功能概述
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 |
## 外部视角
WBP_InventoryView 是 UserWidget 的子类,从外部调用者视角:
**公开属性(蓝图可读写)**
- `Comp`BP_InventoryComp_C*)— 关联的库存组件引用
- `Bo`bool— 内部状态标记
**自定义函数**
- `UpdateListItems()` — 从 Comp 的 ViewCache 刷新物品列表显示
**外部交互方式**
- 作为 BP_Hud 的子 Widget 创建,存放于 InvView 变量
- 通过 Comp 变量引用 BP_InventoryComp读取其 ViewCache 获取物品视图数据
- 绑定 Comp 的 OnViewChanged 委托,在库存变化时自动调用 UpdateListItems
- 列表项使用 WBP_ItemViewBox 作为子 Widget 渲染单个物品
**EventGraph 事件**
| 事件 | 类型 | 触发时机 | 行为 |
|------|------|----------|------|
| `事件预构造` | 原生覆盖 (PreConstruct) | Widget 创建时 | 预留(当前无连线逻辑) |
| `事件构造` | 原生覆盖 (Construct) | Widget 创建完成后 | 预留(当前无连线逻辑) |
| `事件Tick` | 原生覆盖 | 每帧 | 预留(当前无连线逻辑) |
| `BindToComp` | 自定义事件 | 外部系统(如 BP_Hud/BP_Barrel调用时 | 接收 BP_InventoryComp 引用 → 存入 Comp 变量 → 绑定 Comp 的 OnViewChanged 委托到 UpdateListItems_Event |
| `UpdateListItems_Event` | 自定义事件 | Comp 的 OnViewChanged 触发时 | 调用 UpdateListItems 刷新物品列表 UI |
## 使用方法
WBP_InventoryView 在项目中的典型调用流程:
- **库存 UI 绑定流程** — BP_Hud/BARREL 创建 WBP_InventoryView → 调用 BindToComp → 传入 BP_InventoryComp 引用 → 绑定 OnViewChanged → 库存变化时自动触发 UpdateListItems_Event → UpdateListItems 从 ViewCache 刷新 UI
- **手动刷新流程** — 外部系统直接调用 UpdateListItems → 从 Comp.ViewCache 读取当前物品列表 → 遍历渲染 WBP_ItemViewBox 子 Widget
## 用例
| 引用方 | 路径 | 用途 |
|--------|------|------|
| BP_Hud | `/Game/Blueprints/BP_Hud` | 作为 InvView 子 Widget显示物品栏 |
| BP_Barrel | `/Game/Blueprints/Playground/BP_Barrel` | 通过 HUD 访问,展示木桶库存 |
| BP_ItemViewDataView | `/Game/Blueprints/UI/Item/BP_ItemViewDataView` | 引用用于数据视图绑定 |
| WBP_ItemViewBox | `/Game/Blueprints/UI/Item/WBP_ItemViewBox` | 作为列表项模板引用 |