3.7 KiB
3.7 KiB
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 |
作为列表项模板引用 |