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

3.7 KiB
Raw Permalink Blame History

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 的子类,从外部调用者视角:

公开属性(蓝图可读写)

  • CompBP_InventoryComp_C*)— 关联的库存组件引用
  • Bobool— 内部状态标记

自定义函数

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